Data preparation
220 parsing failures.
row # A tibble: 5 x 4 col row col expected actual expected <int> <int> <chr> <chr> actual 1 301 NA date like %m/%d/%y Jun-07 row 2 302 NA date like %m/%d/%y Jun-07 col 3 303 NA date like %m/%d/%y Jun-07 expected 4 304 NA date like %m/%d/%y Jun-07 actual 5 305 NA date like %m/%d/%y Jun-07
... ................. ... ....................................... ........ ....................................... ...... ....................................... ... ....................................... ... ....................................... ........ ....................................... ...... .......................................
See problems(...) for more details.
20 parsing failures.
row # A tibble: 5 x 4 col row col expected actual expected <int> <int> <chr> <chr> actual 1 2229 NA date like %m/%d/%y **parent but birth date as 8/23/17 row 2 2230 NA date like %m/%d/%y **parent but birth date as 8/23/17 col 3 2231 NA date like %m/%d/%y **parent but birth date as 8/23/17 expected 4 2232 NA date like %m/%d/%y **parent but birth date as 8/23/17 actual 5 2233 NA date like %m/%d/%y **parent but birth date as 8/23/17
... ................. ... ................................................................... ........ ................................................................... ...... ................................................................... ... ................................................................... ... ................................................................... ........ ................................................................... ...... ...................................................................
See problems(...) for more details.
back to TOC
Analysis plan
For all studies we conduct exploratory factor analyses using Pearson correlations to find minimum residual solutions.
For each study, we first examine maximal unrotated and rotated solutions. To determine the maximum number of factors to extract, we use the following rule of thumb: With \(p\) observations per participant, we can extract a maximum of \(k\) factors, where \((p-k)*2 > p+k\), i.e., \(k < p/3\). Thus, with 40 mental capacity items, we can extract a maximum of 13 factors.
To determine how many factors to retain, we use the following preset retention criteria, considering the unrotated maximal solution (unless otherwise noted):
- Each factor must have an eigenvalue >1.0.
- Each factor must individually account for >5% of the total variance in the maximal model.
- After rotation, each factor must be the dominant factor (i.e., the factor with the highest factor loading) for ≥1 mental capacity item.
We then examine and interpret varimax-rotated solutions, extracting only the number of factors that meet these criteria.
Study 1
Study information:
- Design: 2 conditions (beetle, robot), 3-point response scale, “decide what to do” and “have intentions”
- Population: adults
- Date conducted: 2016-07-06 (MTurk)
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 4 and the number of components = 4

Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11
angry 0.65 -0.04 -0.11 -0.03 0.05 0.22 -0.02 0.04 -0.10 0.17 0.02
beliefs 0.48 0.40 -0.16 -0.14 0.04 -0.38 0.18 0.09 0.07 0.04 -0.06
calm 0.68 -0.17 0.01 -0.08 -0.08 0.04 0.08 0.10 -0.04 0.02 -0.01
choices 0.37 0.34 0.36 -0.20 0.06 0.09 -0.25 -0.20 0.12 -0.05 0.17
communicating 0.11 0.62 0.18 0.14 -0.18 0.30 0.11 0.18 0.15 -0.05 -0.08
computations -0.33 0.82 -0.07 0.14 -0.03 0.00 -0.02 0.04 0.03 0.00 0.03
conscious 0.44 0.10 0.44 -0.11 0.17 -0.11 -0.24 0.06 0.08 -0.19 -0.15
depressed 0.74 0.04 -0.37 0.04 -0.14 0.04 -0.17 -0.04 -0.21 -0.05 -0.02
depth 0.26 0.27 0.48 0.28 0.12 -0.09 -0.16 -0.09 0.04 -0.08 -0.10
desires 0.66 -0.17 0.10 -0.02 -0.03 -0.02 0.35 -0.48 0.13 -0.14 -0.08
disrespected 0.63 0.06 -0.35 0.16 0.07 0.07 -0.13 -0.03 -0.07 -0.03 -0.07
embarrassed 0.52 0.14 -0.40 0.19 0.48 0.18 0.11 0.11 0.12 -0.03 0.09
emo_recog 0.37 0.39 -0.10 -0.10 0.01 -0.27 -0.09 0.10 0.04 0.08 -0.14
fear 0.72 -0.39 0.14 0.03 -0.18 0.07 0.09 0.12 -0.03 0.13 -0.04
free_will 0.31 0.30 0.32 -0.40 0.15 0.22 -0.07 -0.19 -0.05 0.27 0.10
goal 0.41 0.21 0.19 -0.11 0.07 -0.11 0.18 -0.08 0.02 -0.03 0.07
guilt 0.62 0.14 -0.41 0.21 0.43 0.14 0.04 0.02 0.08 0.00 -0.03
happy 0.76 0.00 -0.33 -0.08 -0.22 0.08 -0.15 -0.03 -0.08 -0.04 -0.08
hungry 0.55 -0.71 0.22 -0.03 0.08 -0.02 0.06 0.02 0.03 0.03 0.05
intentions 0.19 0.62 0.02 -0.16 0.01 0.07 0.26 0.00 -0.20 0.00 0.09
joy 0.76 0.01 -0.39 0.10 -0.17 -0.01 -0.08 -0.07 0.05 0.00 -0.03
love 0.75 0.11 -0.28 0.09 -0.07 -0.09 -0.07 -0.14 -0.03 -0.08 0.00
morality 0.31 0.50 -0.13 0.02 -0.07 -0.19 0.08 0.05 -0.04 0.00 0.18
nauseated 0.65 -0.32 0.14 0.08 -0.16 0.05 0.01 -0.06 0.14 0.03 0.03
odors 0.49 -0.35 0.37 0.05 0.15 -0.09 -0.03 0.10 0.07 0.01 -0.03
pain 0.63 -0.52 0.19 -0.01 -0.04 0.11 0.11 0.19 0.05 -0.01 0.09
personality 0.44 0.36 -0.19 -0.13 -0.03 -0.27 0.01 0.00 0.24 0.20 -0.06
pleasure 0.69 -0.23 -0.07 0.15 -0.15 -0.08 -0.15 0.06 0.16 -0.06 0.21
pride 0.68 0.18 -0.42 0.08 0.04 0.04 0.01 -0.08 -0.14 0.05 -0.06
reasoning 0.34 0.44 0.31 -0.16 0.01 0.21 -0.11 0.01 0.08 0.20 -0.21
recognizing 0.10 0.76 0.12 0.13 -0.21 0.15 0.11 0.11 0.15 -0.02 0.00
remembering 0.14 0.66 0.16 0.10 -0.15 0.13 0.01 -0.05 0.03 -0.15 0.04
safe 0.71 -0.29 0.21 -0.12 -0.03 -0.06 0.04 0.06 -0.03 0.09 -0.13
seeing 0.33 0.15 0.50 0.28 0.08 -0.03 -0.07 -0.01 -0.11 -0.01 0.07
self_aware 0.46 0.18 0.22 -0.30 0.09 0.00 0.12 0.13 -0.20 -0.28 -0.21
self_restraint 0.43 0.35 -0.05 -0.15 0.04 -0.19 -0.08 0.07 0.00 0.02 0.17
sounds 0.27 0.20 0.42 0.38 -0.06 -0.02 0.06 -0.07 -0.11 0.12 -0.07
temperature 0.30 0.19 0.46 0.40 0.05 -0.22 0.04 0.00 -0.26 0.12 0.09
thoughts 0.55 0.18 0.10 -0.37 -0.01 0.04 -0.04 0.10 -0.09 -0.15 0.19
tired 0.69 -0.34 0.23 0.07 -0.06 0.05 0.06 0.08 0.07 -0.07 0.09
MR12 MR13 h2 u2 com
angry -0.20 -0.09 0.58 0.42 1.8
beliefs -0.09 -0.04 0.64 0.36 4.0
calm 0.05 -0.07 0.54 0.46 1.3
choices -0.07 -0.05 0.59 0.41 6.1
communicating -0.01 -0.03 0.65 0.35 2.6
computations -0.06 -0.03 0.81 0.19 1.4
conscious -0.21 0.05 0.63 0.37 4.6
depressed 0.06 -0.03 0.79 0.21 2.0
depth -0.13 -0.02 0.53 0.47 4.1
desires 0.02 -0.07 0.87 0.13 2.9
disrespected -0.02 0.02 0.59 0.41 2.0
embarrassed 0.12 0.07 0.82 0.18 4.3
emo_recog 0.14 0.11 0.46 0.54 4.3
fear -0.16 0.15 0.82 0.18 2.3
free_will 0.08 0.00 0.65 0.35 6.8
goal -0.14 0.15 0.36 0.64 4.0
guilt -0.03 -0.05 0.84 0.16 3.3
happy -0.04 -0.08 0.80 0.20 1.8
hungry 0.07 0.01 0.88 0.12 2.2
intentions -0.01 0.18 0.60 0.40 2.3
joy 0.09 -0.01 0.79 0.21 1.8
love 0.08 0.07 0.71 0.29 1.6
morality -0.10 0.10 0.46 0.54 2.9
nauseated 0.04 0.05 0.61 0.39 2.0
odors 0.11 0.05 0.56 0.44 3.4
pain -0.01 -0.14 0.80 0.20 2.7
personality 0.09 -0.17 0.59 0.41 5.2
pleasure 0.09 0.18 0.72 0.28 2.3
pride -0.16 0.01 0.74 0.26 2.2
reasoning 0.09 0.12 0.60 0.40 5.4
recognizing -0.02 -0.12 0.75 0.25 1.7
remembering 0.09 0.10 0.58 0.42 1.7
safe -0.04 0.07 0.68 0.32 1.8
seeing 0.09 -0.08 0.50 0.50 3.1
self_aware 0.15 -0.07 0.60 0.40 5.6
self_restraint -0.04 -0.14 0.43 0.57 3.5
sounds 0.08 0.01 0.48 0.52 4.0
temperature 0.06 -0.09 0.65 0.35 4.8
thoughts 0.09 -0.05 0.57 0.43 2.9
tired -0.11 -0.05 0.70 0.30 2.0
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12
SS loadings 11.03 5.51 3.15 1.29 0.87 0.84 0.64 0.56 0.51 0.46 0.43 0.38
Proportion Var 0.28 0.14 0.08 0.03 0.02 0.02 0.02 0.01 0.01 0.01 0.01 0.01
Cumulative Var 0.28 0.41 0.49 0.52 0.55 0.57 0.58 0.60 0.61 0.62 0.63 0.64
Proportion Explained 0.42 0.21 0.12 0.05 0.03 0.03 0.02 0.02 0.02 0.02 0.02 0.01
Cumulative Proportion 0.42 0.64 0.76 0.81 0.84 0.87 0.90 0.92 0.94 0.96 0.97 0.99
MR13
SS loadings 0.32
Proportion Var 0.01
Cumulative Var 0.65
Proportion Explained 0.01
Cumulative Proportion 1.00
Mean item complexity = 3.1
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 338 and the objective function was 2.41
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 196 with the empirical chi square 93.35 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 424.01 with prob < 0.001
Tucker Lewis Index of factoring reliability = 0.951
RMSEA index = 0.046 and the 90 % confidence intervals are 0.024 0.046
BIC = -1366.82
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7
Correlation of scores with factors 0.99 0.98 0.95 0.88 0.89 0.84 0.83
Multiple R square of scores with factors 0.98 0.95 0.91 0.77 0.79 0.70 0.70
Minimum correlation of possible factor scores 0.95 0.90 0.82 0.55 0.59 0.40 0.39
MR8 MR9 MR10 MR11 MR12 MR13
Correlation of scores with factors 0.85 0.78 0.75 0.73 0.74 0.71
Multiple R square of scores with factors 0.73 0.61 0.57 0.54 0.54 0.50
Minimum correlation of possible factor scores 0.45 0.23 0.14 0.08 0.08 0.00
Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11
angry 0.65 -0.04 -0.11 -0.03 0.05 0.22 -0.02 0.04 -0.10 0.17 0.02
beliefs 0.48 0.40 -0.16 -0.14 0.04 -0.38 0.18 0.09 0.07 0.04 -0.06
calm 0.68 -0.17 0.01 -0.08 -0.08 0.04 0.08 0.10 -0.04 0.02 -0.01
choices 0.37 0.34 0.36 -0.20 0.06 0.09 -0.25 -0.20 0.12 -0.05 0.17
communicating 0.11 0.62 0.18 0.14 -0.18 0.30 0.11 0.18 0.15 -0.05 -0.08
computations -0.33 0.82 -0.07 0.14 -0.03 0.00 -0.02 0.04 0.03 0.00 0.03
conscious 0.44 0.10 0.44 -0.11 0.17 -0.11 -0.24 0.06 0.08 -0.19 -0.15
depressed 0.74 0.04 -0.37 0.04 -0.14 0.04 -0.17 -0.04 -0.21 -0.05 -0.02
depth 0.26 0.27 0.48 0.28 0.12 -0.09 -0.16 -0.09 0.04 -0.08 -0.10
desires 0.66 -0.17 0.10 -0.02 -0.03 -0.02 0.35 -0.48 0.13 -0.14 -0.08
disrespected 0.63 0.06 -0.35 0.16 0.07 0.07 -0.13 -0.03 -0.07 -0.03 -0.07
embarrassed 0.52 0.14 -0.40 0.19 0.48 0.18 0.11 0.11 0.12 -0.03 0.09
emo_recog 0.37 0.39 -0.10 -0.10 0.01 -0.27 -0.09 0.10 0.04 0.08 -0.14
fear 0.72 -0.39 0.14 0.03 -0.18 0.07 0.09 0.12 -0.03 0.13 -0.04
free_will 0.31 0.30 0.32 -0.40 0.15 0.22 -0.07 -0.19 -0.05 0.27 0.10
goal 0.41 0.21 0.19 -0.11 0.07 -0.11 0.18 -0.08 0.02 -0.03 0.07
guilt 0.62 0.14 -0.41 0.21 0.43 0.14 0.04 0.02 0.08 0.00 -0.03
happy 0.76 0.00 -0.33 -0.08 -0.22 0.08 -0.15 -0.03 -0.08 -0.04 -0.08
hungry 0.55 -0.71 0.22 -0.03 0.08 -0.02 0.06 0.02 0.03 0.03 0.05
intentions 0.19 0.62 0.02 -0.16 0.01 0.07 0.26 0.00 -0.20 0.00 0.09
joy 0.76 0.01 -0.39 0.10 -0.17 -0.01 -0.08 -0.07 0.05 0.00 -0.03
love 0.75 0.11 -0.28 0.09 -0.07 -0.09 -0.07 -0.14 -0.03 -0.08 0.00
morality 0.31 0.50 -0.13 0.02 -0.07 -0.19 0.08 0.05 -0.04 0.00 0.18
nauseated 0.65 -0.32 0.14 0.08 -0.16 0.05 0.01 -0.06 0.14 0.03 0.03
odors 0.49 -0.35 0.37 0.05 0.15 -0.09 -0.03 0.10 0.07 0.01 -0.03
pain 0.63 -0.52 0.19 -0.01 -0.04 0.11 0.11 0.19 0.05 -0.01 0.09
personality 0.44 0.36 -0.19 -0.13 -0.03 -0.27 0.01 0.00 0.24 0.20 -0.06
pleasure 0.69 -0.23 -0.07 0.15 -0.15 -0.08 -0.15 0.06 0.16 -0.06 0.21
pride 0.68 0.18 -0.42 0.08 0.04 0.04 0.01 -0.08 -0.14 0.05 -0.06
reasoning 0.34 0.44 0.31 -0.16 0.01 0.21 -0.11 0.01 0.08 0.20 -0.21
recognizing 0.10 0.76 0.12 0.13 -0.21 0.15 0.11 0.11 0.15 -0.02 0.00
remembering 0.14 0.66 0.16 0.10 -0.15 0.13 0.01 -0.05 0.03 -0.15 0.04
safe 0.71 -0.29 0.21 -0.12 -0.03 -0.06 0.04 0.06 -0.03 0.09 -0.13
seeing 0.33 0.15 0.50 0.28 0.08 -0.03 -0.07 -0.01 -0.11 -0.01 0.07
self_aware 0.46 0.18 0.22 -0.30 0.09 0.00 0.12 0.13 -0.20 -0.28 -0.21
self_restraint 0.43 0.35 -0.05 -0.15 0.04 -0.19 -0.08 0.07 0.00 0.02 0.17
sounds 0.27 0.20 0.42 0.38 -0.06 -0.02 0.06 -0.07 -0.11 0.12 -0.07
temperature 0.30 0.19 0.46 0.40 0.05 -0.22 0.04 0.00 -0.26 0.12 0.09
thoughts 0.55 0.18 0.10 -0.37 -0.01 0.04 -0.04 0.10 -0.09 -0.15 0.19
tired 0.69 -0.34 0.23 0.07 -0.06 0.05 0.06 0.08 0.07 -0.07 0.09
MR12 MR13 h2 u2 com
angry -0.20 -0.09 0.58 0.42 1.8
beliefs -0.09 -0.04 0.64 0.36 4.0
calm 0.05 -0.07 0.54 0.46 1.3
choices -0.07 -0.05 0.59 0.41 6.1
communicating -0.01 -0.03 0.65 0.35 2.6
computations -0.06 -0.03 0.81 0.19 1.4
conscious -0.21 0.05 0.63 0.37 4.6
depressed 0.06 -0.03 0.79 0.21 2.0
depth -0.13 -0.02 0.53 0.47 4.1
desires 0.02 -0.07 0.87 0.13 2.9
disrespected -0.02 0.02 0.59 0.41 2.0
embarrassed 0.12 0.07 0.82 0.18 4.3
emo_recog 0.14 0.11 0.46 0.54 4.3
fear -0.16 0.15 0.82 0.18 2.3
free_will 0.08 0.00 0.65 0.35 6.8
goal -0.14 0.15 0.36 0.64 4.0
guilt -0.03 -0.05 0.84 0.16 3.3
happy -0.04 -0.08 0.80 0.20 1.8
hungry 0.07 0.01 0.88 0.12 2.2
intentions -0.01 0.18 0.60 0.40 2.3
joy 0.09 -0.01 0.79 0.21 1.8
love 0.08 0.07 0.71 0.29 1.6
morality -0.10 0.10 0.46 0.54 2.9
nauseated 0.04 0.05 0.61 0.39 2.0
odors 0.11 0.05 0.56 0.44 3.4
pain -0.01 -0.14 0.80 0.20 2.7
personality 0.09 -0.17 0.59 0.41 5.2
pleasure 0.09 0.18 0.72 0.28 2.3
pride -0.16 0.01 0.74 0.26 2.2
reasoning 0.09 0.12 0.60 0.40 5.4
recognizing -0.02 -0.12 0.75 0.25 1.7
remembering 0.09 0.10 0.58 0.42 1.7
safe -0.04 0.07 0.68 0.32 1.8
seeing 0.09 -0.08 0.50 0.50 3.1
self_aware 0.15 -0.07 0.60 0.40 5.6
self_restraint -0.04 -0.14 0.43 0.57 3.5
sounds 0.08 0.01 0.48 0.52 4.0
temperature 0.06 -0.09 0.65 0.35 4.8
thoughts 0.09 -0.05 0.57 0.43 2.9
tired -0.11 -0.05 0.70 0.30 2.0
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12
SS loadings 11.03 5.51 3.15 1.29 0.87 0.84 0.64 0.56 0.51 0.46 0.43 0.38
Proportion Var 0.28 0.14 0.08 0.03 0.02 0.02 0.02 0.01 0.01 0.01 0.01 0.01
Cumulative Var 0.28 0.41 0.49 0.52 0.55 0.57 0.58 0.60 0.61 0.62 0.63 0.64
Proportion Explained 0.42 0.21 0.12 0.05 0.03 0.03 0.02 0.02 0.02 0.02 0.02 0.01
Cumulative Proportion 0.42 0.64 0.76 0.81 0.84 0.87 0.90 0.92 0.94 0.96 0.97 0.99
MR13
SS loadings 0.32
Proportion Var 0.01
Cumulative Var 0.65
Proportion Explained 0.01
Cumulative Proportion 1.00
Mean item complexity = 3.1
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 338 and the objective function was 2.41
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 196 with the empirical chi square 93.35 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 424.01 with prob < 0.001
Tucker Lewis Index of factoring reliability = 0.951
RMSEA index = 0.046 and the 90 % confidence intervals are 0.024 0.046
BIC = -1366.82
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7
Correlation of scores with factors 0.99 0.98 0.95 0.88 0.89 0.84 0.83
Multiple R square of scores with factors 0.98 0.95 0.91 0.77 0.79 0.70 0.70
Minimum correlation of possible factor scores 0.95 0.90 0.82 0.55 0.59 0.40 0.39
MR8 MR9 MR10 MR11 MR12 MR13
Correlation of scores with factors 0.85 0.78 0.75 0.73 0.74 0.71
Multiple R square of scores with factors 0.73 0.61 0.57 0.54 0.54 0.50
Minimum correlation of possible factor scores 0.45 0.23 0.14 0.08 0.08 0.00
[1] 3
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = nfactors_d1_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 h2 u2 com
angry 0.50 0.27 0.09 0.43 0.57 1.6
beliefs 0.53 -0.17 0.24 0.40 0.60 1.6
calm 0.39 0.45 0.12 0.50 0.50 2.1
choices 0.03 0.08 0.59 0.36 0.64 1.0
communicating 0.07 -0.33 0.53 0.41 0.59 1.7
computations 0.04 -0.83 0.33 0.80 0.20 1.3
conscious -0.05 0.34 0.54 0.37 0.63 1.7
depressed 0.81 0.10 -0.06 0.68 0.32 1.0
depth -0.17 0.15 0.62 0.35 0.65 1.3
desires 0.31 0.45 0.17 0.44 0.56 2.1
disrespected 0.72 0.05 -0.06 0.53 0.47 1.0
embarrassed 0.66 -0.06 -0.07 0.39 0.61 1.0
emo_recog 0.41 -0.18 0.26 0.29 0.71 2.1
fear 0.26 0.70 0.11 0.68 0.32 1.3
free_will 0.02 0.06 0.49 0.25 0.75 1.0
goal 0.15 0.12 0.41 0.25 0.75 1.4
guilt 0.75 -0.03 -0.05 0.53 0.47 1.0
happy 0.78 0.17 -0.04 0.68 0.32 1.1
hungry 0.00 0.93 -0.06 0.87 0.13 1.0
intentions 0.25 -0.38 0.43 0.41 0.59 2.6
joy 0.84 0.12 -0.09 0.73 0.27 1.1
love 0.76 0.10 0.06 0.66 0.34 1.0
morality 0.43 -0.32 0.28 0.36 0.64 2.6
nauseated 0.23 0.62 0.13 0.54 0.46 1.4
odors -0.08 0.69 0.25 0.50 0.50 1.3
pain 0.13 0.79 0.05 0.70 0.30 1.1
personality 0.52 -0.18 0.19 0.34 0.66 1.5
pleasure 0.44 0.44 0.02 0.51 0.49 2.0
pride 0.85 -0.06 -0.04 0.68 0.32 1.0
reasoning 0.07 -0.02 0.60 0.39 0.61 1.0
recognizing 0.14 -0.48 0.57 0.59 0.41 2.1
remembering 0.11 -0.37 0.56 0.48 0.52 1.8
safe 0.22 0.65 0.22 0.63 0.37 1.5
seeing -0.17 0.29 0.59 0.37 0.63 1.6
self_aware 0.15 0.18 0.40 0.27 0.73 1.7
self_restraint 0.40 -0.10 0.29 0.30 0.70 2.0
sounds -0.13 0.18 0.53 0.27 0.73 1.3
temperature -0.13 0.21 0.55 0.30 0.70 1.4
thoughts 0.31 0.16 0.34 0.33 0.67 2.4
tired 0.17 0.70 0.20 0.64 0.36 1.3
MR1 MR2 MR3
SS loadings 7.56 6.63 5.04
Proportion Var 0.19 0.17 0.13
Cumulative Var 0.19 0.35 0.48
Proportion Explained 0.39 0.34 0.26
Cumulative Proportion 0.39 0.74 1.00
With factor correlations of
MR1 MR2 MR3
MR1 1.00 0.28 0.30
MR2 0.28 1.00 -0.01
MR3 0.30 -0.01 1.00
Mean item complexity = 1.5
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 663 and the objective function was 6.67
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 196 with the empirical chi square 729.79 with prob < 0.036
The total number of observations was 200 with Likelihood Chi Square = 1219.34 with prob < 2.1e-35
Tucker Lewis Index of factoring reliability = 0.846
RMSEA index = 0.071 and the 90 % confidence intervals are 0.059 NA
BIC = -2293.44
Fit based upon off diagonal values = 0.98
Measures of factor score adequacy
MR1 MR2 MR3
Correlation of scores with factors 0.97 0.98 0.95
Multiple R square of scores with factors 0.95 0.96 0.89
Minimum correlation of possible factor scores 0.89 0.92 0.79
back to TOC
Study 2
Study information:
- Design: 2 conditions (beetle, robot), 3-point response scale, “decide what to do” and “have intentions”
- Population: 7-9yo children
- Date conducted: June - December 2016
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 3 and the number of components = 3

Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11
angry 0.57 -0.17 -0.04 -0.07 0.05 0.16 0.11 0.06 -0.04 0.01 -0.04
beliefs 0.54 0.23 -0.07 -0.09 0.05 0.24 -0.12 -0.05 -0.01 0.13 0.06
calm 0.55 -0.07 0.01 0.02 -0.10 -0.09 -0.14 0.05 -0.01 -0.18 0.10
choices 0.43 0.05 0.26 -0.38 -0.07 0.20 -0.05 -0.13 0.11 0.05 -0.15
communicating 0.09 0.30 0.16 0.30 -0.17 0.03 0.19 0.11 0.29 0.04 0.04
computations -0.01 0.80 -0.04 0.02 0.08 0.10 -0.09 0.03 0.10 -0.11 0.08
conscious 0.36 0.08 0.48 0.21 -0.14 0.01 0.16 -0.12 -0.27 -0.14 -0.04
depressed 0.69 -0.11 -0.13 0.05 -0.06 -0.13 0.12 0.06 0.21 -0.09 -0.15
depth 0.14 0.22 0.36 0.12 0.34 0.02 -0.14 -0.07 -0.02 0.02 0.17
desires 0.52 -0.19 -0.03 -0.01 -0.08 0.21 -0.07 -0.04 0.02 0.10 0.03
disrespected 0.69 0.00 -0.11 -0.07 -0.03 -0.02 0.16 -0.16 -0.09 0.03 0.10
embarrassed 0.53 0.03 -0.30 0.10 0.22 0.34 0.23 -0.06 -0.01 -0.03 0.02
emo_recog 0.34 0.50 -0.05 0.09 0.11 -0.07 0.22 0.14 -0.09 0.07 -0.02
fear 0.55 -0.37 0.11 0.11 -0.08 0.03 0.01 0.17 0.09 0.03 -0.06
free_will 0.49 0.00 0.32 -0.22 -0.09 0.11 -0.21 -0.18 0.08 0.03 -0.02
goal 0.35 0.31 -0.03 -0.09 -0.06 0.10 -0.11 0.22 0.02 -0.18 -0.25
guilt 0.58 0.07 -0.18 0.13 0.25 0.19 -0.07 -0.10 -0.07 -0.08 0.14
happy 0.72 0.09 -0.20 0.18 -0.20 -0.06 -0.01 -0.13 0.09 -0.03 0.12
hungry 0.38 -0.77 0.22 0.02 0.14 -0.04 0.01 -0.08 0.06 0.05 0.00
intentions 0.35 0.40 0.15 -0.24 0.11 0.03 0.02 -0.12 0.09 -0.14 0.08
joy 0.70 0.00 -0.26 0.10 -0.18 -0.10 -0.03 -0.05 0.06 -0.01 0.05
love 0.60 0.03 -0.20 0.11 0.03 -0.11 0.09 -0.19 -0.05 0.05 0.07
morality 0.44 0.37 -0.13 -0.08 0.21 -0.26 -0.05 0.26 -0.18 0.33 0.07
nauseated 0.30 -0.43 0.06 0.11 0.27 0.05 0.00 0.07 0.16 0.06 -0.10
odors 0.15 -0.53 0.38 0.06 0.09 0.12 -0.06 0.16 0.06 0.03 0.19
pain 0.45 -0.64 0.21 -0.06 0.07 -0.09 -0.05 -0.04 -0.01 0.10 -0.01
personality 0.54 0.29 -0.01 -0.12 0.20 0.12 0.01 0.18 -0.01 0.06 -0.09
pleasure 0.60 0.04 -0.18 0.10 -0.23 -0.17 -0.31 0.04 0.01 -0.04 0.08
pride 0.68 0.14 -0.31 0.06 -0.05 -0.02 0.01 -0.04 -0.01 -0.04 -0.03
reasoning 0.23 0.28 0.36 0.05 -0.16 -0.01 -0.05 0.01 0.05 0.12 -0.06
recognizing 0.20 0.32 0.13 0.10 0.11 0.00 -0.11 0.21 0.06 0.00 0.04
remembering 0.06 0.58 0.17 0.13 -0.05 0.00 0.01 -0.17 0.19 0.28 -0.24
safe 0.58 -0.08 0.23 0.06 -0.06 -0.06 -0.19 0.16 -0.24 0.00 -0.10
seeing -0.07 0.13 0.26 -0.03 -0.19 -0.08 0.19 -0.08 0.02 0.27 0.20
self_aware 0.27 0.21 0.46 -0.03 -0.10 0.09 0.23 0.00 -0.31 -0.10 -0.09
self_restraint 0.34 0.19 0.15 -0.56 0.11 -0.33 0.20 0.05 0.17 -0.16 0.15
sounds -0.07 0.10 0.40 0.10 -0.18 0.23 0.08 0.23 0.14 -0.08 0.25
temperature -0.05 0.34 0.41 0.31 0.34 -0.26 -0.15 -0.23 0.08 -0.15 -0.09
thoughts 0.57 0.01 0.18 -0.05 -0.11 -0.16 -0.03 0.03 -0.09 0.03 -0.03
tired 0.39 -0.35 0.07 0.11 0.16 -0.16 0.24 0.06 0.12 -0.07 -0.11
MR12 MR13 h2 u2 com
angry 0.02 -0.16 0.44 0.56 1.7
beliefs 0.08 0.21 0.50 0.50 2.8
calm -0.02 0.10 0.40 0.60 1.8
choices 0.16 -0.09 0.54 0.46 4.6
communicating -0.02 -0.12 0.40 0.60 5.9
computations 0.10 0.00 0.71 0.29 1.2
conscious -0.12 0.01 0.58 0.42 4.2
depressed -0.01 0.00 0.63 0.37 1.7
depth -0.15 -0.07 0.41 0.59 4.8
desires -0.17 0.15 0.42 0.58 2.3
disrespected 0.09 0.08 0.58 0.42 1.4
embarrassed -0.13 -0.05 0.63 0.37 3.7
emo_recog 0.13 0.05 0.49 0.51 3.1
fear -0.25 -0.09 0.58 0.42 2.9
free_will -0.03 -0.10 0.51 0.49 3.5
goal -0.04 0.14 0.42 0.58 5.4
guilt -0.05 -0.03 0.53 0.47 2.4
happy 0.05 -0.09 0.69 0.31 1.8
hungry 0.03 0.01 0.81 0.19 1.8
intentions 0.05 -0.12 0.43 0.57 4.2
joy 0.11 0.02 0.62 0.38 1.6
love 0.03 0.14 0.50 0.50 1.9
morality 0.03 -0.09 0.69 0.31 5.9
nauseated 0.02 0.08 0.42 0.58 3.6
odors 0.09 -0.06 0.55 0.45 3.0
pain 0.06 0.08 0.70 0.30 2.3
personality 0.00 0.09 0.50 0.50 2.6
pleasure -0.09 -0.02 0.60 0.40 2.5
pride 0.01 -0.15 0.61 0.39 1.7
reasoning -0.11 0.22 0.37 0.63 4.8
recognizing -0.14 0.05 0.26 0.74 4.7
remembering -0.03 -0.08 0.59 0.41 2.8
safe 0.09 -0.22 0.59 0.41 2.8
seeing -0.08 0.02 0.30 0.70 6.0
self_aware -0.03 0.01 0.52 0.48 4.2
self_restraint -0.19 0.01 0.76 0.24 4.5
sounds 0.23 0.06 0.47 0.53 5.6
temperature 0.08 0.04 0.68 0.32 6.4
thoughts 0.15 0.08 0.44 0.56 1.8
tired 0.12 0.05 0.45 0.55 4.7
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12
SS loadings 8.25 4.13 2.18 1.05 0.96 0.84 0.73 0.66 0.62 0.54 0.52 0.44
Proportion Var 0.21 0.10 0.05 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01 0.01
Cumulative Var 0.21 0.31 0.36 0.39 0.41 0.44 0.45 0.47 0.49 0.50 0.51 0.52
Proportion Explained 0.39 0.19 0.10 0.05 0.05 0.04 0.03 0.03 0.03 0.03 0.02 0.02
Cumulative Proportion 0.39 0.58 0.68 0.73 0.78 0.82 0.85 0.88 0.91 0.94 0.96 0.98
MR13
SS loadings 0.40
Proportion Var 0.01
Cumulative Var 0.53
Proportion Explained 0.02
Cumulative Proportion 1.00
Mean item complexity = 3.4
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 338 and the objective function was 1.79
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 198 with the empirical chi square 142.71 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 314.7 with prob < 0.81
Tucker Lewis Index of factoring reliability = 1.024
RMSEA index = 0.016 and the 90 % confidence intervals are 0 0.018
BIC = -1476.13
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7
Correlation of scores with factors 0.98 0.96 0.91 0.86 0.83 0.83 0.79
Multiple R square of scores with factors 0.95 0.93 0.83 0.74 0.69 0.68 0.62
Minimum correlation of possible factor scores 0.90 0.86 0.67 0.48 0.38 0.36 0.23
MR8 MR9 MR10 MR11 MR12 MR13
Correlation of scores with factors 0.77 0.77 0.75 0.73 0.71 0.67
Multiple R square of scores with factors 0.60 0.59 0.56 0.53 0.50 0.45
Minimum correlation of possible factor scores 0.19 0.18 0.12 0.06 0.00 -0.10
Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11
angry 0.57 -0.17 -0.04 -0.07 0.05 0.16 0.11 0.06 -0.04 0.01 -0.04
beliefs 0.54 0.23 -0.07 -0.09 0.05 0.24 -0.12 -0.05 -0.01 0.13 0.06
calm 0.55 -0.07 0.01 0.02 -0.10 -0.09 -0.14 0.05 -0.01 -0.18 0.10
choices 0.43 0.05 0.26 -0.38 -0.07 0.20 -0.05 -0.13 0.11 0.05 -0.15
communicating 0.09 0.30 0.16 0.30 -0.17 0.03 0.19 0.11 0.29 0.04 0.04
computations -0.01 0.80 -0.04 0.02 0.08 0.10 -0.09 0.03 0.10 -0.11 0.08
conscious 0.36 0.08 0.48 0.21 -0.14 0.01 0.16 -0.12 -0.27 -0.14 -0.04
depressed 0.69 -0.11 -0.13 0.05 -0.06 -0.13 0.12 0.06 0.21 -0.09 -0.15
depth 0.14 0.22 0.36 0.12 0.34 0.02 -0.14 -0.07 -0.02 0.02 0.17
desires 0.52 -0.19 -0.03 -0.01 -0.08 0.21 -0.07 -0.04 0.02 0.10 0.03
disrespected 0.69 0.00 -0.11 -0.07 -0.03 -0.02 0.16 -0.16 -0.09 0.03 0.10
embarrassed 0.53 0.03 -0.30 0.10 0.22 0.34 0.23 -0.06 -0.01 -0.03 0.02
emo_recog 0.34 0.50 -0.05 0.09 0.11 -0.07 0.22 0.14 -0.09 0.07 -0.02
fear 0.55 -0.37 0.11 0.11 -0.08 0.03 0.01 0.17 0.09 0.03 -0.06
free_will 0.49 0.00 0.32 -0.22 -0.09 0.11 -0.21 -0.18 0.08 0.03 -0.02
goal 0.35 0.31 -0.03 -0.09 -0.06 0.10 -0.11 0.22 0.02 -0.18 -0.25
guilt 0.58 0.07 -0.18 0.13 0.25 0.19 -0.07 -0.10 -0.07 -0.08 0.14
happy 0.72 0.09 -0.20 0.18 -0.20 -0.06 -0.01 -0.13 0.09 -0.03 0.12
hungry 0.38 -0.77 0.22 0.02 0.14 -0.04 0.01 -0.08 0.06 0.05 0.00
intentions 0.35 0.40 0.15 -0.24 0.11 0.03 0.02 -0.12 0.09 -0.14 0.08
joy 0.70 0.00 -0.26 0.10 -0.18 -0.10 -0.03 -0.05 0.06 -0.01 0.05
love 0.60 0.03 -0.20 0.11 0.03 -0.11 0.09 -0.19 -0.05 0.05 0.07
morality 0.44 0.37 -0.13 -0.08 0.21 -0.26 -0.05 0.26 -0.18 0.33 0.07
nauseated 0.30 -0.43 0.06 0.11 0.27 0.05 0.00 0.07 0.16 0.06 -0.10
odors 0.15 -0.53 0.38 0.06 0.09 0.12 -0.06 0.16 0.06 0.03 0.19
pain 0.45 -0.64 0.21 -0.06 0.07 -0.09 -0.05 -0.04 -0.01 0.10 -0.01
personality 0.54 0.29 -0.01 -0.12 0.20 0.12 0.01 0.18 -0.01 0.06 -0.09
pleasure 0.60 0.04 -0.18 0.10 -0.23 -0.17 -0.31 0.04 0.01 -0.04 0.08
pride 0.68 0.14 -0.31 0.06 -0.05 -0.02 0.01 -0.04 -0.01 -0.04 -0.03
reasoning 0.23 0.28 0.36 0.05 -0.16 -0.01 -0.05 0.01 0.05 0.12 -0.06
recognizing 0.20 0.32 0.13 0.10 0.11 0.00 -0.11 0.21 0.06 0.00 0.04
remembering 0.06 0.58 0.17 0.13 -0.05 0.00 0.01 -0.17 0.19 0.28 -0.24
safe 0.58 -0.08 0.23 0.06 -0.06 -0.06 -0.19 0.16 -0.24 0.00 -0.10
seeing -0.07 0.13 0.26 -0.03 -0.19 -0.08 0.19 -0.08 0.02 0.27 0.20
self_aware 0.27 0.21 0.46 -0.03 -0.10 0.09 0.23 0.00 -0.31 -0.10 -0.09
self_restraint 0.34 0.19 0.15 -0.56 0.11 -0.33 0.20 0.05 0.17 -0.16 0.15
sounds -0.07 0.10 0.40 0.10 -0.18 0.23 0.08 0.23 0.14 -0.08 0.25
temperature -0.05 0.34 0.41 0.31 0.34 -0.26 -0.15 -0.23 0.08 -0.15 -0.09
thoughts 0.57 0.01 0.18 -0.05 -0.11 -0.16 -0.03 0.03 -0.09 0.03 -0.03
tired 0.39 -0.35 0.07 0.11 0.16 -0.16 0.24 0.06 0.12 -0.07 -0.11
MR12 MR13 h2 u2 com
angry 0.02 -0.16 0.44 0.56 1.7
beliefs 0.08 0.21 0.50 0.50 2.8
calm -0.02 0.10 0.40 0.60 1.8
choices 0.16 -0.09 0.54 0.46 4.6
communicating -0.02 -0.12 0.40 0.60 5.9
computations 0.10 0.00 0.71 0.29 1.2
conscious -0.12 0.01 0.58 0.42 4.2
depressed -0.01 0.00 0.63 0.37 1.7
depth -0.15 -0.07 0.41 0.59 4.8
desires -0.17 0.15 0.42 0.58 2.3
disrespected 0.09 0.08 0.58 0.42 1.4
embarrassed -0.13 -0.05 0.63 0.37 3.7
emo_recog 0.13 0.05 0.49 0.51 3.1
fear -0.25 -0.09 0.58 0.42 2.9
free_will -0.03 -0.10 0.51 0.49 3.5
goal -0.04 0.14 0.42 0.58 5.4
guilt -0.05 -0.03 0.53 0.47 2.4
happy 0.05 -0.09 0.69 0.31 1.8
hungry 0.03 0.01 0.81 0.19 1.8
intentions 0.05 -0.12 0.43 0.57 4.2
joy 0.11 0.02 0.62 0.38 1.6
love 0.03 0.14 0.50 0.50 1.9
morality 0.03 -0.09 0.69 0.31 5.9
nauseated 0.02 0.08 0.42 0.58 3.6
odors 0.09 -0.06 0.55 0.45 3.0
pain 0.06 0.08 0.70 0.30 2.3
personality 0.00 0.09 0.50 0.50 2.6
pleasure -0.09 -0.02 0.60 0.40 2.5
pride 0.01 -0.15 0.61 0.39 1.7
reasoning -0.11 0.22 0.37 0.63 4.8
recognizing -0.14 0.05 0.26 0.74 4.7
remembering -0.03 -0.08 0.59 0.41 2.8
safe 0.09 -0.22 0.59 0.41 2.8
seeing -0.08 0.02 0.30 0.70 6.0
self_aware -0.03 0.01 0.52 0.48 4.2
self_restraint -0.19 0.01 0.76 0.24 4.5
sounds 0.23 0.06 0.47 0.53 5.6
temperature 0.08 0.04 0.68 0.32 6.4
thoughts 0.15 0.08 0.44 0.56 1.8
tired 0.12 0.05 0.45 0.55 4.7
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12
SS loadings 8.25 4.13 2.18 1.05 0.96 0.84 0.73 0.66 0.62 0.54 0.52 0.44
Proportion Var 0.21 0.10 0.05 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01 0.01
Cumulative Var 0.21 0.31 0.36 0.39 0.41 0.44 0.45 0.47 0.49 0.50 0.51 0.52
Proportion Explained 0.39 0.19 0.10 0.05 0.05 0.04 0.03 0.03 0.03 0.03 0.02 0.02
Cumulative Proportion 0.39 0.58 0.68 0.73 0.78 0.82 0.85 0.88 0.91 0.94 0.96 0.98
MR13
SS loadings 0.40
Proportion Var 0.01
Cumulative Var 0.53
Proportion Explained 0.02
Cumulative Proportion 1.00
Mean item complexity = 3.4
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 338 and the objective function was 1.79
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 198 with the empirical chi square 142.71 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 314.7 with prob < 0.81
Tucker Lewis Index of factoring reliability = 1.024
RMSEA index = 0.016 and the 90 % confidence intervals are 0 0.018
BIC = -1476.13
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7
Correlation of scores with factors 0.98 0.96 0.91 0.86 0.83 0.83 0.79
Multiple R square of scores with factors 0.95 0.93 0.83 0.74 0.69 0.68 0.62
Minimum correlation of possible factor scores 0.90 0.86 0.67 0.48 0.38 0.36 0.23
MR8 MR9 MR10 MR11 MR12 MR13
Correlation of scores with factors 0.77 0.77 0.75 0.73 0.71 0.67
Multiple R square of scores with factors 0.60 0.59 0.56 0.53 0.50 0.45
Minimum correlation of possible factor scores 0.19 0.18 0.12 0.06 0.00 -0.10
[1] 3
convergence not obtained in GPFoblq. 1000 iterations used.
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = nfactors_d2_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 h2 u2 com
angry 0.48 0.26 0.05 0.356 0.64 1.6
beliefs 0.51 -0.12 0.16 0.336 0.66 1.3
calm 0.44 0.17 0.12 0.299 0.70 1.5
choices 0.19 0.13 0.36 0.231 0.77 1.8
communicating 0.01 -0.20 0.26 0.111 0.89 1.9
computations 0.12 -0.76 0.25 0.650 0.35 1.3
conscious 0.00 0.16 0.56 0.331 0.67 1.2
depressed 0.65 0.20 0.02 0.504 0.50 1.2
depth -0.09 -0.04 0.45 0.182 0.82 1.1
desires 0.42 0.27 0.04 0.301 0.70 1.7
disrespected 0.65 0.11 0.08 0.488 0.51 1.1
embarrassed 0.62 -0.02 -0.12 0.346 0.65 1.1
emo_recog 0.38 -0.40 0.22 0.360 0.64 2.6
fear 0.33 0.49 0.12 0.441 0.56 1.9
free_will 0.19 0.21 0.43 0.331 0.67 1.9
goal 0.35 -0.21 0.17 0.212 0.79 2.2
guilt 0.60 -0.01 0.01 0.358 0.64 1.0
happy 0.74 0.00 0.02 0.555 0.44 1.0
hungry 0.06 0.87 0.04 0.786 0.21 1.0
intentions 0.24 -0.24 0.37 0.293 0.71 2.5
joy 0.76 0.05 -0.07 0.555 0.44 1.0
love 0.64 0.03 -0.03 0.403 0.60 1.0
morality 0.47 -0.26 0.13 0.306 0.69 1.8
nauseated 0.15 0.47 -0.02 0.270 0.73 1.2
odors -0.20 0.64 0.22 0.425 0.57 1.4
pain 0.15 0.77 0.10 0.662 0.34 1.1
personality 0.49 -0.15 0.24 0.372 0.63 1.7
pleasure 0.61 0.03 0.00 0.375 0.63 1.0
pride 0.81 -0.11 -0.08 0.594 0.41 1.1
reasoning -0.02 -0.08 0.51 0.265 0.73 1.0
recognizing 0.12 -0.20 0.29 0.154 0.85 2.1
remembering 0.02 -0.44 0.36 0.333 0.67 1.9
safe 0.31 0.27 0.34 0.380 0.62 2.9
seeing -0.21 -0.04 0.27 0.083 0.92 1.9
self_aware -0.05 0.02 0.57 0.303 0.70 1.0
self_restraint 0.21 -0.04 0.26 0.144 0.86 2.0
sounds -0.28 0.03 0.37 0.144 0.86 1.9
temperature -0.23 -0.17 0.43 0.212 0.79 1.9
thoughts 0.35 0.17 0.34 0.364 0.64 2.5
tired 0.23 0.42 0.04 0.266 0.73 1.6
MR1 MR2 MR3
SS loadings 6.84 4.15 3.09
Proportion Var 0.17 0.10 0.08
Cumulative Var 0.17 0.27 0.35
Proportion Explained 0.49 0.29 0.22
Cumulative Proportion 0.49 0.78 1.00
With factor correlations of
MR1 MR2 MR3
MR1 1.00 0.16 0.34
MR2 0.16 1.00 -0.02
MR3 0.34 -0.02 1.00
Mean item complexity = 1.6
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 663 and the objective function was 4.79
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 198 with the empirical chi square 788.89 with prob < 0.00052
The total number of observations was 200 with Likelihood Chi Square = 874.92 with prob < 5.4e-08
Tucker Lewis Index of factoring reliability = 0.894
RMSEA index = 0.047 and the 90 % confidence intervals are 0.032 0.047
BIC = -2637.86
Fit based upon off diagonal values = 0.95
Measures of factor score adequacy
MR1 MR2 MR3
Correlation of scores with factors 0.96 0.96 0.90
Multiple R square of scores with factors 0.92 0.92 0.81
Minimum correlation of possible factor scores 0.85 0.84 0.62
back to TOC
Study 3
Study information:
- Design: 7 conditions (beetle, robot, …) + 2 follow-up conditions, 3-point response scale, “decide what to do” and “have intentions”
- Population: 7-9yo children
- Date conducted: January - June 2017
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 3 and the number of components = 3

Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = 6, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 h2 u2 com
angry 0.80 -0.08 0.00 -0.04 -0.36 -0.05 0.78 0.22 1.4
choices 0.56 0.52 0.15 -0.03 -0.03 -0.06 0.61 0.39 2.2
conscious 0.48 0.35 0.09 0.02 0.04 0.04 0.37 0.63 2.0
depressed 0.71 -0.23 0.21 -0.20 -0.15 0.16 0.69 0.31 1.8
depth 0.33 0.45 0.06 -0.17 0.24 0.16 0.43 0.57 3.2
disrespected 0.62 -0.23 0.27 -0.03 -0.01 0.27 0.59 0.41 2.1
embarrassed 0.53 -0.17 0.43 0.06 0.10 0.09 0.52 0.48 2.3
fear 0.83 -0.15 -0.27 0.11 0.10 -0.05 0.80 0.20 1.4
guilt 0.54 -0.33 0.46 0.38 -0.03 -0.07 0.76 0.24 3.6
happy 0.69 -0.18 -0.02 -0.27 -0.05 -0.15 0.60 0.40 1.6
hungry 0.75 -0.01 -0.54 0.10 -0.02 -0.03 0.86 0.14 1.9
love 0.65 -0.25 0.06 0.14 0.27 0.02 0.58 0.42 1.8
nauseated 0.52 0.10 -0.25 0.09 -0.21 0.34 0.50 0.50 2.8
odors 0.64 0.02 -0.42 0.14 -0.04 -0.10 0.61 0.39 1.9
pain 0.75 -0.15 -0.28 -0.08 0.10 -0.04 0.67 0.33 1.4
pride 0.72 -0.26 0.27 -0.23 0.02 -0.28 0.79 0.21 2.2
reasoning 0.39 0.61 0.07 0.06 0.06 -0.09 0.54 0.46 1.9
remembering 0.33 0.58 0.27 0.22 -0.15 -0.11 0.60 0.40 2.7
temperature 0.39 0.52 0.07 -0.14 -0.02 0.02 0.45 0.55 2.1
tired 0.77 0.07 -0.10 0.01 0.18 0.06 0.65 0.35 1.2
MR1 MR2 MR3 MR4 MR5 MR6
SS loadings 7.66 2.04 1.39 0.49 0.43 0.40
Proportion Var 0.38 0.10 0.07 0.02 0.02 0.02
Cumulative Var 0.38 0.49 0.55 0.58 0.60 0.62
Proportion Explained 0.62 0.16 0.11 0.04 0.03 0.03
Cumulative Proportion 0.62 0.78 0.89 0.93 0.97 1.00
Mean item complexity = 2.1
Test of the hypothesis that 6 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 12.17 with Chi Square of 1393.17
The degrees of freedom for the model are 85 and the objective function was 0.93
The root mean square of the residuals (RMSR) is 0.03
The df corrected root mean square of the residuals is 0.04
The harmonic number of observations is 123 with the empirical chi square 32.36 with prob < 1
The total number of observations was 123 with Likelihood Chi Square = 103.04 with prob < 0.089
Tucker Lewis Index of factoring reliability = 0.965
RMSEA index = 0.053 and the 90 % confidence intervals are 0 0.068
BIC = -306
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6
Correlation of scores with factors 0.98 0.91 0.92 0.79 0.76 0.72
Multiple R square of scores with factors 0.96 0.83 0.85 0.62 0.57 0.52
Minimum correlation of possible factor scores 0.92 0.66 0.69 0.25 0.14 0.05
Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = 6, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 h2 u2 com
angry 0.80 -0.08 0.00 -0.04 -0.36 -0.05 0.78 0.22 1.4
choices 0.56 0.52 0.15 -0.03 -0.03 -0.06 0.61 0.39 2.2
conscious 0.48 0.35 0.09 0.02 0.04 0.04 0.37 0.63 2.0
depressed 0.71 -0.23 0.21 -0.20 -0.15 0.16 0.69 0.31 1.8
depth 0.33 0.45 0.06 -0.17 0.24 0.16 0.43 0.57 3.2
disrespected 0.62 -0.23 0.27 -0.03 -0.01 0.27 0.59 0.41 2.1
embarrassed 0.53 -0.17 0.43 0.06 0.10 0.09 0.52 0.48 2.3
fear 0.83 -0.15 -0.27 0.11 0.10 -0.05 0.80 0.20 1.4
guilt 0.54 -0.33 0.46 0.38 -0.03 -0.07 0.76 0.24 3.6
happy 0.69 -0.18 -0.02 -0.27 -0.05 -0.15 0.60 0.40 1.6
hungry 0.75 -0.01 -0.54 0.10 -0.02 -0.03 0.86 0.14 1.9
love 0.65 -0.25 0.06 0.14 0.27 0.02 0.58 0.42 1.8
nauseated 0.52 0.10 -0.25 0.09 -0.21 0.34 0.50 0.50 2.8
odors 0.64 0.02 -0.42 0.14 -0.04 -0.10 0.61 0.39 1.9
pain 0.75 -0.15 -0.28 -0.08 0.10 -0.04 0.67 0.33 1.4
pride 0.72 -0.26 0.27 -0.23 0.02 -0.28 0.79 0.21 2.2
reasoning 0.39 0.61 0.07 0.06 0.06 -0.09 0.54 0.46 1.9
remembering 0.33 0.58 0.27 0.22 -0.15 -0.11 0.60 0.40 2.7
temperature 0.39 0.52 0.07 -0.14 -0.02 0.02 0.45 0.55 2.1
tired 0.77 0.07 -0.10 0.01 0.18 0.06 0.65 0.35 1.2
MR1 MR2 MR3 MR4 MR5 MR6
SS loadings 7.66 2.04 1.39 0.49 0.43 0.40
Proportion Var 0.38 0.10 0.07 0.02 0.02 0.02
Cumulative Var 0.38 0.49 0.55 0.58 0.60 0.62
Proportion Explained 0.62 0.16 0.11 0.04 0.03 0.03
Cumulative Proportion 0.62 0.78 0.89 0.93 0.97 1.00
Mean item complexity = 2.1
Test of the hypothesis that 6 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 12.17 with Chi Square of 1393.17
The degrees of freedom for the model are 85 and the objective function was 0.93
The root mean square of the residuals (RMSR) is 0.03
The df corrected root mean square of the residuals is 0.04
The harmonic number of observations is 123 with the empirical chi square 32.36 with prob < 1
The total number of observations was 123 with Likelihood Chi Square = 103.04 with prob < 0.089
Tucker Lewis Index of factoring reliability = 0.965
RMSEA index = 0.053 and the 90 % confidence intervals are 0 0.068
BIC = -306
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6
Correlation of scores with factors 0.98 0.91 0.92 0.79 0.76 0.72
Multiple R square of scores with factors 0.96 0.83 0.85 0.62 0.57 0.52
Minimum correlation of possible factor scores 0.92 0.66 0.69 0.25 0.14 0.05
[1] 3
A loading greater than abs(1) was detected. Examine the loadings carefully.
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = nfactors_d3_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR3 MR2 h2 u2 com
angry 0.41 0.43 0.14 0.62 0.38 2.2
choices 0.05 0.09 0.73 0.62 0.38 1.0
conscious 0.09 0.10 0.52 0.37 0.63 1.1
depressed 0.17 0.66 0.03 0.60 0.40 1.1
depth 0.04 -0.04 0.54 0.29 0.71 1.0
disrespected 0.06 0.67 0.02 0.51 0.49 1.0
embarrassed -0.17 0.76 0.10 0.52 0.48 1.1
fear 0.73 0.26 -0.01 0.78 0.22 1.3
guilt -0.11 0.78 -0.04 0.52 0.48 1.0
happy 0.38 0.42 0.01 0.49 0.51 2.0
hungry 0.98 -0.11 0.02 0.87 0.13 1.0
love 0.30 0.51 -0.05 0.48 0.52 1.6
nauseated 0.48 0.00 0.16 0.31 0.69 1.2
odors 0.78 -0.08 0.06 0.58 0.42 1.0
pain 0.69 0.21 -0.03 0.66 0.34 1.2
pride 0.13 0.71 0.02 0.63 0.37 1.1
reasoning 0.04 -0.11 0.74 0.54 0.46 1.0
remembering -0.17 0.05 0.71 0.46 0.54 1.1
temperature 0.05 -0.05 0.65 0.43 0.57 1.0
tired 0.49 0.25 0.25 0.61 0.39 2.1
MR1 MR3 MR2
SS loadings 4.10 3.90 2.88
Proportion Var 0.21 0.19 0.14
Cumulative Var 0.21 0.40 0.54
Proportion Explained 0.38 0.36 0.26
Cumulative Proportion 0.38 0.74 1.00
With factor correlations of
MR1 MR3 MR2
MR1 1.00 0.5 0.36
MR3 0.50 1.0 0.30
MR2 0.36 0.3 1.00
Mean item complexity = 1.3
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 12.17 with Chi Square of 1393.17
The degrees of freedom for the model are 133 and the objective function was 1.7
The root mean square of the residuals (RMSR) is 0.04
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 123 with the empirical chi square 82.37 with prob < 1
The total number of observations was 123 with Likelihood Chi Square = 191.76 with prob < 0.00065
Tucker Lewis Index of factoring reliability = 0.929
RMSEA index = 0.068 and the 90 % confidence intervals are 0.04 0.078
BIC = -448.26
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR3 MR2
Correlation of scores with factors 0.97 0.94 0.92
Multiple R square of scores with factors 0.94 0.89 0.85
Minimum correlation of possible factor scores 0.89 0.78 0.69
back to TOC
Subscales
Reliability (and intercorrelations - see alpha)
Call: scoreItems(keys = keys.list, items = d3_all, min = 0, max = 1)
(Unstandardized) Alpha:
HEART BODY MIND
alpha 0.88 0.91 0.82
Standard errors of unstandardized Alpha:
HEART BODY MIND
ASE 0.036 0.032 0.048
Average item correlation:
HEART BODY MIND
average.r 0.5 0.58 0.43
Guttman 6* reliability:
HEART BODY MIND
Lambda.6 0.89 0.93 0.83
Signal/Noise based upon av.r :
HEART BODY MIND
Signal/Noise 7 9.6 4.5
Scale intercorrelations corrected for attenuation
raw correlations below the diagonal, alpha on the diagonal
corrected correlations above the diagonal:
HEART BODY MIND
HEART 0.88 0.74 0.37
BODY 0.66 0.91 0.50
MIND 0.31 0.43 0.82
In order to see the item by scale loadings and frequency counts of the data
print with the short option = FALSEOmega
Call: omega(m = d3_all, plot = F)
Alpha: 0.92
G.6: 0.94
Omega Hierarchical: 0.64
Omega H asymptotic: 0.68
Omega Total 0.94
Schmid Leiman Factor loadings greater than 0.2
g F1* F2* F3* h2 u2 p2
angry 0.66 0.26 0.33 0.62 0.38 0.70
choices 0.44 0.64 0.62 0.38 0.32
conscious 0.38 0.46 0.37 0.63 0.40
depressed 0.57 0.51 0.60 0.40 0.55
depth 0.26 0.47 0.29 0.71 0.23
disrespected 0.49 0.52 0.51 0.49 0.47
embarrassed 0.40 0.58 0.52 0.48 0.31
fear 0.73 0.46 0.20 0.78 0.22 0.68
guilt 0.40 0.60 0.52 0.48 0.30
happy 0.57 0.24 0.32 0.49 0.51 0.67
hungry 0.70 0.61 0.87 0.13 0.56
love 0.54 0.39 0.48 0.52 0.60
nauseated 0.45 0.30 0.31 0.69 0.65
odors 0.58 0.49 0.58 0.42 0.58
pain 0.66 0.44 0.66 0.34 0.67
pride 0.57 0.55 0.63 0.37 0.51
reasoning 0.31 0.66 0.54 0.46 0.18
remembering 0.23 0.63 0.46 0.54 0.11
temperature 0.31 0.58 0.43 0.57 0.22
tired 0.66 0.30 0.22 0.61 0.39 0.71
With eigenvalues of:
g F1* F2* F3*
5.3 1.4 2.0 2.1
general/max 2.53 max/min = 1.5
mean percent general = 0.47 with sd = 0.2 and cv of 0.42
Explained Common Variance of the general factor = 0.49
The degrees of freedom are 133 and the fit is 1.7
The number of observations was 123 with Chi Square = 191.76 with prob < 0.00065
The root mean square of the residuals is 0.04
The df corrected root mean square of the residuals is 0.05
RMSEA index = 0.068 and the 10 % confidence intervals are 0.04 0.078
BIC = -448.26
Compare this with the adequacy of just a general factor and no group factors
The degrees of freedom for just the general factor are 170 and the fit is 5.12
The number of observations was 123 with Chi Square = 582.57 with prob < 1.3e-46
The root mean square of the residuals is 0.16
The df corrected root mean square of the residuals is 0.17
RMSEA index = 0.148 and the 10 % confidence intervals are 0.129 0.154
BIC = -235.5
Measures of factor score adequacy
g F1* F2* F3*
Correlation of scores with factors 0.83 0.70 0.81 0.86
Multiple R square of scores with factors 0.69 0.49 0.66 0.74
Minimum correlation of factor score estimates 0.38 -0.02 0.32 0.49
Total, General and Subset omega for each subset
g F1* F2* F3*
Omega total for total scores and subscales 0.94 0.89 0.88 0.82
Omega general for total scores and subscales 0.64 0.61 0.49 0.20
Omega group for total scores and subscales 0.22 0.29 0.40 0.63
Study 4
Study information:
- Design: 7 conditions (beetle, robot, …) + 2 follow-up conditions (doll, teddy bear), 3-point response scale, “decide what to do” and “have intentions”
- Population: 4-6yo children
- Date conducted: March 2017 - present
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 2 and the number of components = 1

Factor Analysis using method = minres
Call: fa(r = d4_all, nfactors = 6, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 h2 u2 com
angry 0.67 -0.02 -0.20 -0.41 0.13 0.02 0.68 0.3238 2.0
choices 0.53 0.08 0.10 0.14 0.21 0.18 0.40 0.6042 1.9
conscious 0.57 0.56 -0.53 0.05 -0.26 0.04 1.00 0.0015 3.4
depressed 0.61 -0.18 -0.20 -0.06 0.29 0.22 0.58 0.4184 2.2
depth 0.43 0.31 0.07 -0.01 0.09 0.08 0.30 0.6981 2.1
disrespected 0.66 -0.06 -0.24 -0.20 0.15 -0.16 0.58 0.4173 1.8
embarrassed 0.55 -0.04 0.07 0.13 -0.05 -0.36 0.46 0.5369 1.9
fear 0.60 -0.13 0.16 0.10 -0.21 0.09 0.47 0.5347 1.6
guilt 0.50 0.17 0.22 0.02 0.15 -0.03 0.35 0.6478 1.9
happy 0.68 -0.19 -0.13 0.40 0.06 -0.07 0.69 0.3080 1.9
hungry 0.74 -0.20 0.22 -0.19 -0.10 -0.04 0.69 0.3127 1.5
love 0.59 -0.27 -0.12 0.36 -0.05 0.15 0.59 0.4133 2.4
nauseated 0.65 -0.19 0.04 -0.03 0.11 -0.24 0.53 0.4679 1.5
odors 0.62 -0.18 0.17 -0.20 -0.31 0.16 0.61 0.3906 2.3
pain 0.53 0.01 -0.11 -0.10 -0.13 -0.21 0.37 0.6327 1.6
pride 0.66 -0.14 -0.12 0.15 -0.09 0.06 0.50 0.4993 1.3
reasoning 0.51 0.23 0.15 -0.15 -0.03 0.03 0.36 0.6428 1.8
remembering 0.41 0.24 0.38 0.06 -0.04 0.02 0.37 0.6262 2.7
temperature 0.50 0.43 0.19 0.20 0.13 -0.09 0.53 0.4659 2.8
tired 0.72 0.03 0.10 -0.11 0.00 0.12 0.56 0.4423 1.2
MR1 MR2 MR3 MR4 MR5 MR6
SS loadings 7.04 1.04 0.86 0.74 0.49 0.44
Proportion Var 0.35 0.05 0.04 0.04 0.02 0.02
Cumulative Var 0.35 0.40 0.45 0.48 0.51 0.53
Proportion Explained 0.66 0.10 0.08 0.07 0.05 0.04
Cumulative Proportion 0.66 0.76 0.84 0.91 0.96 1.00
Mean item complexity = 2
Test of the hypothesis that 6 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 8.76 with Chi Square of 994.76
The degrees of freedom for the model are 85 and the objective function was 0.89
The root mean square of the residuals (RMSR) is 0.03
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 120 with the empirical chi square 50.27 with prob < 1
The total number of observations was 122 with Likelihood Chi Square = 97.45 with prob < 0.17
Tucker Lewis Index of factoring reliability = 0.964
RMSEA index = 0.047 and the 90 % confidence intervals are 0 0.063
BIC = -310.9
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6
Correlation of scores with factors 0.97 0.90 0.88 0.82 0.77 0.69
Multiple R square of scores with factors 0.95 0.81 0.78 0.67 0.59 0.48
Minimum correlation of possible factor scores 0.89 0.63 0.56 0.34 0.19 -0.05
Factor Analysis using method = minres
Call: fa(r = d4_all, nfactors = 6, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 h2 u2 com
angry 0.67 -0.02 -0.20 -0.41 0.13 0.02 0.68 0.3238 2.0
choices 0.53 0.08 0.10 0.14 0.21 0.18 0.40 0.6042 1.9
conscious 0.57 0.56 -0.53 0.05 -0.26 0.04 1.00 0.0015 3.4
depressed 0.61 -0.18 -0.20 -0.06 0.29 0.22 0.58 0.4184 2.2
depth 0.43 0.31 0.07 -0.01 0.09 0.08 0.30 0.6981 2.1
disrespected 0.66 -0.06 -0.24 -0.20 0.15 -0.16 0.58 0.4173 1.8
embarrassed 0.55 -0.04 0.07 0.13 -0.05 -0.36 0.46 0.5369 1.9
fear 0.60 -0.13 0.16 0.10 -0.21 0.09 0.47 0.5347 1.6
guilt 0.50 0.17 0.22 0.02 0.15 -0.03 0.35 0.6478 1.9
happy 0.68 -0.19 -0.13 0.40 0.06 -0.07 0.69 0.3080 1.9
hungry 0.74 -0.20 0.22 -0.19 -0.10 -0.04 0.69 0.3127 1.5
love 0.59 -0.27 -0.12 0.36 -0.05 0.15 0.59 0.4133 2.4
nauseated 0.65 -0.19 0.04 -0.03 0.11 -0.24 0.53 0.4679 1.5
odors 0.62 -0.18 0.17 -0.20 -0.31 0.16 0.61 0.3906 2.3
pain 0.53 0.01 -0.11 -0.10 -0.13 -0.21 0.37 0.6327 1.6
pride 0.66 -0.14 -0.12 0.15 -0.09 0.06 0.50 0.4993 1.3
reasoning 0.51 0.23 0.15 -0.15 -0.03 0.03 0.36 0.6428 1.8
remembering 0.41 0.24 0.38 0.06 -0.04 0.02 0.37 0.6262 2.7
temperature 0.50 0.43 0.19 0.20 0.13 -0.09 0.53 0.4659 2.8
tired 0.72 0.03 0.10 -0.11 0.00 0.12 0.56 0.4423 1.2
MR1 MR2 MR3 MR4 MR5 MR6
SS loadings 7.04 1.04 0.86 0.74 0.49 0.44
Proportion Var 0.35 0.05 0.04 0.04 0.02 0.02
Cumulative Var 0.35 0.40 0.45 0.48 0.51 0.53
Proportion Explained 0.66 0.10 0.08 0.07 0.05 0.04
Cumulative Proportion 0.66 0.76 0.84 0.91 0.96 1.00
Mean item complexity = 2
Test of the hypothesis that 6 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 8.76 with Chi Square of 994.76
The degrees of freedom for the model are 85 and the objective function was 0.89
The root mean square of the residuals (RMSR) is 0.03
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 120 with the empirical chi square 50.27 with prob < 1
The total number of observations was 122 with Likelihood Chi Square = 97.45 with prob < 0.17
Tucker Lewis Index of factoring reliability = 0.964
RMSEA index = 0.047 and the 90 % confidence intervals are 0 0.063
BIC = -310.9
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6
Correlation of scores with factors 0.97 0.90 0.88 0.82 0.77 0.69
Multiple R square of scores with factors 0.95 0.81 0.78 0.67 0.59 0.48
Minimum correlation of possible factor scores 0.89 0.63 0.56 0.34 0.19 -0.05
[1] 2
The estimated weights for the factor scores are probably incorrect. Try a different factor extraction method.
[1] 2
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d4_all, nfactors = nfactors_d4_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 h2 u2 com
angry 0.61 0.08 0.44 0.56 1.0
choices 0.31 0.29 0.29 0.71 2.0
conscious 0.28 0.32 0.29 0.71 2.0
depressed 0.67 -0.07 0.40 0.60 1.0
depth 0.03 0.52 0.30 0.70 1.0
disrespected 0.66 0.01 0.45 0.55 1.0
embarrassed 0.45 0.14 0.30 0.70 1.2
fear 0.54 0.09 0.36 0.64 1.1
guilt 0.16 0.46 0.32 0.68 1.2
happy 0.73 -0.05 0.49 0.51 1.0
hungry 0.68 0.10 0.55 0.45 1.0
love 0.71 -0.15 0.40 0.60 1.1
nauseated 0.66 0.01 0.45 0.55 1.0
odors 0.57 0.06 0.37 0.63 1.0
pain 0.47 0.09 0.28 0.72 1.1
pride 0.72 -0.05 0.47 0.53 1.0
reasoning 0.16 0.47 0.34 0.66 1.2
remembering -0.03 0.57 0.31 0.69 1.0
temperature -0.03 0.70 0.46 0.54 1.0
tired 0.51 0.30 0.53 0.47 1.6
MR1 MR2
SS loadings 5.58 2.22
Proportion Var 0.28 0.11
Cumulative Var 0.28 0.39
Proportion Explained 0.72 0.28
Cumulative Proportion 0.72 1.00
With factor correlations of
MR1 MR2
MR1 1.0 0.6
MR2 0.6 1.0
Mean item complexity = 1.2
Test of the hypothesis that 2 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 8.76 with Chi Square of 994.76
The degrees of freedom for the model are 151 and the objective function was 2.16
The root mean square of the residuals (RMSR) is 0.06
The df corrected root mean square of the residuals is 0.07
The harmonic number of observations is 120 with the empirical chi square 177.45 with prob < 0.07
The total number of observations was 122 with Likelihood Chi Square = 242.36 with prob < 3.4e-06
Tucker Lewis Index of factoring reliability = 0.855
RMSEA index = 0.078 and the 90 % confidence intervals are 0.054 0.087
BIC = -483.05
Fit based upon off diagonal values = 0.97
Measures of factor score adequacy
MR1 MR2
Correlation of scores with factors 0.95 0.88
Multiple R square of scores with factors 0.91 0.78
Minimum correlation of possible factor scores 0.82 0.56
back to TOC
Big factor loadings table for all studies (Studies 1-4)
Joining, by = "capacity"
Joining, by = "capacity"
Joining, by = c("order1_manual", "capacity")
Mean factor scores
Studies 1-2
Joining, by = c("study", "subid", "character", "age", "gender", "ethnicity", "trialNum", "bgColor", "capacity", "capWording", "hoverTime", "rt", "response", "responseNum", "age_group", "responseNumC")
Column `study` joining factors with different levels, coercing to character vectorColumn `character` joining factors with different levels, coercing to character vectorColumn `gender` joining factors with different levels, coercing to character vectorColumn `ethnicity` joining factors with different levels, coercing to character vectorColumn `capWording` joining factors with different levels, coercing to character vectorColumn `response` joining factors with different levels, coercing to character vectorJoining, by = "subid"
Linear mixed model fit by REML ['lmerMod']
Formula: score ~ character * factor * age_group + (1 | subid)
Data: tempC
REML criterion at convergence: 88511.7
Scaled residuals:
Min 1Q Median 3Q Max
-4.4074 -0.6221 0.0366 0.6372 3.1000
Random effects:
Groups Name Variance Std.Dev.
subid (Intercept) 0.2185 0.4674
Residual 0.3629 0.6024
Number of obs: 47532, groups: subid, 400
Fixed effects:
Estimate Std. Error t value
(Intercept) -0.001375 0.023547 -0.06
characterrobot -0.261025 0.023547 -11.09
factorfactor1 0.007273 0.003910 1.86
factorfactor3 0.003545 0.003910 0.91
age_groupchildren 0.200593 0.023547 8.52
characterrobot:factorfactor1 0.256782 0.003910 65.67
characterrobot:factorfactor3 0.381560 0.003910 97.58
characterrobot:age_groupchildren 0.043968 0.023547 1.87
factorfactor1:age_groupchildren 0.449252 0.003910 114.89
factorfactor3:age_groupchildren -0.264105 0.003910 -67.54
characterrobot:factorfactor1:age_groupchildren -0.017585 0.003910 -4.50
characterrobot:factorfactor3:age_groupchildren -0.025877 0.003910 -6.62
Correlation of Fixed Effects:
(Intr) chrctr fctrf1 fctrf3 ag_grp chrc:1 chrc:3 chrc:_ fct1:_ fct3:_
charactrrbt 0.010
factorfctr1 0.000 0.000
factorfctr3 0.000 0.000 -0.500
ag_grpchldr 0.001 0.030 0.000 0.000
chrctrrbt:1 0.000 0.000 0.013 -0.006 0.000
chrctrrbt:3 0.000 0.000 -0.006 0.013 0.000 -0.500
chrctrrbt:_ 0.030 0.001 0.000 0.000 0.010 0.000 0.000
fctrfctr1:_ 0.000 0.000 -0.002 0.001 0.000 0.033 -0.016 0.000
fctrfctr3:_ 0.000 0.000 0.001 -0.002 0.000 -0.016 0.033 0.000 -0.500
chrctrr:1:_ 0.000 0.000 0.033 -0.016 0.000 -0.002 0.001 0.000 0.013 -0.006
chrctrr:3:_ 0.000 0.000 -0.016 0.033 0.000 0.001 -0.002 0.000 -0.006 0.013
ch:1:_
charactrrbt
factorfctr1
factorfctr3
ag_grpchldr
chrctrrbt:1
chrctrrbt:3
chrctrrbt:_
fctrfctr1:_
fctrfctr3:_
chrctrr:1:_
chrctrr:3:_ -0.500

Study 3

Studies 3-4
Call: scoreItems(keys = keys.list_s34, items = d34_all, min = 0, max = 1)
(Unstandardized) Alpha:
HEART BODY MIND
alpha 0.86 0.86 0.79
Standard errors of unstandardized Alpha:
HEART BODY MIND
ASE 0.025 0.03 0.037
Average item correlation:
HEART BODY MIND
average.r 0.43 0.5 0.38
Guttman 6* reliability:
HEART BODY MIND
Lambda.6 0.87 0.86 0.78
Signal/Noise based upon av.r :
HEART BODY MIND
Signal/Noise 6.1 6.1 3.7
Scale intercorrelations corrected for attenuation
raw correlations below the diagonal, alpha on the diagonal
corrected correlations above the diagonal:
HEART BODY MIND
HEART 0.86 0.83 0.56
BODY 0.71 0.86 0.61
MIND 0.46 0.50 0.79
In order to see the item by scale loadings and frequency counts of the data
print with the short option = FALSEOmega
Call: omega(m = d34_all, plot = F)
Alpha: 0.91
G.6: 0.93
Omega Hierarchical: 0.73
Omega H asymptotic: 0.79
Omega Total 0.93
Schmid Leiman Factor loadings greater than 0.2
g F1* F2* F3* h2 u2 p2
angry 0.65 0.23 0.52 0.48 0.81
choices 0.47 0.47 0.44 0.56 0.49
conscious 0.43 0.43 0.37 0.63 0.49
depressed 0.60 0.40 0.51 0.49 0.69
depth 0.32 0.46 0.32 0.68 0.32
disrespected 0.57 0.39 0.48 0.52 0.68
embarrassed 0.46 0.34 0.33 0.67 0.65
fear 0.65 0.33 0.55 0.45 0.76
guilt 0.45 0.31 0.31 0.69 0.63
happy 0.62 0.36 0.52 0.48 0.73
hungry 0.70 0.58 0.83 0.17 0.60
love 0.55 0.35 0.44 0.56 0.69
nauseated 0.52 0.23 0.34 0.66 0.79
odors 0.58 0.46 0.55 0.45 0.62
pain 0.58 0.25 0.42 0.58 0.79
pride 0.61 0.41 0.54 0.46 0.69
reasoning 0.39 0.53 0.43 0.57 0.35
remembering 0.30 0.52 0.36 0.64 0.25
temperature 0.37 0.53 0.42 0.58 0.32
tired 0.67 0.23 0.22 0.57 0.43 0.78
With eigenvalues of:
g F1* F2* F3*
5.75 1.09 0.89 1.53
general/max 3.75 max/min = 1.73
mean percent general = 0.61 with sd = 0.18 and cv of 0.29
Explained Common Variance of the general factor = 0.62
The degrees of freedom are 133 and the fit is 0.99
The number of observations was 245 with Chi Square = 232.5 with prob < 2.1e-07
The root mean square of the residuals is 0.04
The df corrected root mean square of the residuals is 0.05
RMSEA index = 0.058 and the 10 % confidence intervals are 0.043 0.067
BIC = -499.17
Compare this with the adequacy of just a general factor and no group factors
The degrees of freedom for just the general factor are 170 and the fit is 2.5
The number of observations was 245 with Chi Square = 588.7 with prob < 1.5e-47
The root mean square of the residuals is 0.11
The df corrected root mean square of the residuals is 0.11
RMSEA index = 0.103 and the 10 % confidence intervals are 0.092 0.109
BIC = -346.52
Measures of factor score adequacy
g F1* F2* F3*
Correlation of scores with factors 0.87 0.65 0.72 0.80
Multiple R square of scores with factors 0.76 0.42 0.52 0.64
Minimum correlation of factor score estimates 0.53 -0.16 0.04 0.28
Total, General and Subset omega for each subset
g F1* F2* F3*
Omega total for total scores and subscales 0.93 0.86 0.85 0.79
Omega general for total scores and subscales 0.73 0.62 0.65 0.30
Omega group for total scores and subscales 0.14 0.24 0.21 0.49

Factor scores by age
Study 1
Joining, by = "subid"

Study 2
Joining, by = "subid"

Studies 1-2
Joining, by = "subid"
Ignoring unknown aesthetics: y

Studies 3-4
Joining, by = c("age_group", "subid", "age", "character")
Column `character` joining factors with different levels, coercing to character vectorJoining, by = "subid"


Joining, by = c("subid", "study")
Column `study` joining factors with different levels, coercing to character vectorJoining, by = "subid"
Joining, by = "capacity"

LS0tCnRpdGxlOiAiRGlta2lkIENvZ1NjaSAyMDE3IChXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCBDb2dTY2kgMjAxNykiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdGhlbWU6IGZsYXRseQogICAgdG9jOiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwotLS0KCmBgYHtyIGdsb2JhbF9vcHRpb25zLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQpgYGAKCiMgU2V0dXAKCmBgYHtyIHdvcmtzcGFjZSBzZXR1cH0KIyBsb2FkIGxpYnJhcmllcwpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShwc3ljaCkKbGlicmFyeShsYW5nY29nKSAjIHNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2xhbmdjb2cvbGFuZ2NvZwpsaWJyYXJ5KFJDb2xvckJyZXdlcikKbGlicmFyeShwbG90bHkpCmxpYnJhcnkobHVicmlkYXRlKQpsaWJyYXJ5KHJtcykKCiMgY2xlYXIgd29ya3NwYWNlCnJtKGxpc3QgPSBscyhhbGwgPSBUKSkKZ3JhcGhpY3Mub2ZmKCkKYGBgCgpgYGB7ciBmdW5jdGlvbnN9CiMgbWFrZSByb3VuZGluZyBmdW5jdGlvbgpyb3VuZDIgPC0gZnVuY3Rpb24oeCkge2Zvcm1hdChyb3VuZCh4LCAyKSwgbnNtYWxsID0gMil9CgojIG1ha2UgY2xlYW51cCBmdW5jdGlvbgpjbGVhbnVwIDwtIGZ1bmN0aW9uKGRhdGFzb3VyY2UsIGFnZV9ncm91cCkgewogIGlmKGdyZXBsKCJhZHVsdCIsIGFnZV9ncm91cCkpIHsKICAgIAogICAgIyBzZXQgdGFyZ2V0IGRhdGFzZXQKICAgIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGRfcmF3X3N0dWR5MX0KICAgIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkX3Jhd19zdHVkeTFifQogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGRfcmF3X3N0dWR5MWN9CiAgICAKICAgICMgZW5hY3QgZXhjbHVzaW9uYXJ5IGNyaXRlcmlhCiAgICBkX2NsZWFuXzEgPC0gZAogICAgCiAgICAjIHJlY29kZSBiYWNrZ3JvdW5kIGFuZCBkZW1vZ3JhcGhpYyB2YXJpYWJsZXMKICAgIGRfY2xlYW4gPC0gZF9jbGVhbl8xICU+JQogICAgICBtdXRhdGUoICMgZGVhbCB3aXRoIHN0dWR5IG51bWJlcgogICAgICAgIHN0dWR5ID0gZmFjdG9yKHN0dWR5KSkgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggcmFjZQogICAgICAgIHJhY2VfY2F0MiA9IGZhY3RvcihzdWIoIiArJCIsICIiLCBldGhuaWNpdHkpKSwKICAgICAgICByYWNlX2NhdDMgPSBmYWN0b3IoaWZlbHNlKGdyZXBsKCIgIiwgcmFjZV9jYXQyKSA9PSBULCAibXVsdGlyYWNpYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMuY2hhcmFjdGVyKHJhY2VfY2F0MikpKSkgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3Qoc3R1ZHksIHN1YmlkOmNvdW50cnlfc2VsZnJlcCwgYWdlX2dyb3VwLCByYWNlX2NhdDMpICU+JQogICAgICByZW5hbWUocmFjZV9jYXQgPSByYWNlX2NhdDMpICU+JQogICAgICBtdXRhdGUoICMgZGVhbCB3aXRoIHJlbGlnaW9uIChub3RlOiBvbmx5IGRlYWxpbmcgd2l0aCBjaGlsZGhvb2QgcmVsaWdpb24gZm9yIG5vdykKICAgICAgICByZWxpZ2lvbl9jYXQyID0gZmFjdG9yKHN1YigiICskIiwgIiIsIHJlbGlnaW9uQ2hpbGQpKSwKICAgICAgICByZWxpZ2lvbl9jYXQzID0gZmFjdG9yKGlmZWxzZShncmVwbCgiICIsIHJlbGlnaW9uX2NhdDIpID09IFQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXJlbGlnaW91cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMuY2hhcmFjdGVyKHJlbGlnaW9uX2NhdDIpKSkpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KHN0dWR5OnJhY2VfY2F0LCByZWxpZ2lvbl9jYXQzKSAlPiUKICAgICAgcmVuYW1lKHJlbGlnaW9uX2NhdCA9IHJlbGlnaW9uX2NhdDMpCiAgICAKICAgICMgcmVtb3ZlIGV4dHJhbmVvdXMgZGZzIGFuZCB2YXJpYWJsZXMKICAgIHJtKGQsIGRfY2xlYW5fMSkKICB9CiAgCiAgaWYoZ3JlcGwoImNoaWxkIiwgYWdlX2dyb3VwKSkgewogICAgCiAgICAjIHNldCB0YXJnZXQgZGF0YXNldAogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMiIpe2QgPC0gZF9yYXdfc3R1ZHkyfQogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMyIpe2QgPC0gZF9yYXdfc3R1ZHkzfQogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgNCIpe2QgPC0gZF9yYXdfc3R1ZHk0fQogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgNSIpe2QgPC0gZF9yYXdfc3R1ZHk1fQogICAgCiAgICAjIHJlY29kZSBiYWNrZ3JvdW5kIGFuZCBkZW1vZ3JhcGhpYyB2YXJpYWJsZXMKICAgIGRfY2xlYW5fMiA8LSBkICU+JQogICAgICBtdXRhdGUoICMgZGVhbCB3aXRoIHN0dWR5IG51bWJlcgogICAgICAgIHN0dWR5ID0gZmFjdG9yKHN0dWR5KSwKICAgICAgICByZXNwb25zZU51bSA9IGlmZWxzZSghaXMubmEocmVzcG9uc2VOdW0pLCByZXNwb25zZU51bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocmVzcG9uc2UgPT0gIm5vIiwgMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShyZXNwb25zZSA9PSAia2luZGEiLCAwLjUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlc3BvbnNlID09ICJ5ZXMiLCAxLCBOQSkpKSkpCiAgICAjIE5PVEU6IG5lZWQgdG8gcmVjb25jaWxlIHJhY2UvZXRobmljaXR5IGF0IHNvbWUgcG9pbnQuLi4KICAgICMgTk9URTogbmVlZCB0byBkZWFsIHdpdGggZ2VuZGVyIGF0IHNvbWUgcG9pbnQuLi4KICAKICAgIGRfY2xlYW4gPC0gZF9jbGVhbl8yCiAgICAKICAgICMgcmVtb3ZlIGV4dHJhbmVvdXMgZGZzIGFuZCB2YXJpYWJsZXMKICAgIHJtKGQsIGRfY2xlYW5fMikKICB9CiAgCiAgIyByZW1vdmUgb3V0bGllcnMgaWYgZGVzaXJlZAogIGlmKGNob3Nlbk91dGxpZXJIYW5kbGluZyA9PSAicmVtb3ZlIikgewogICAgCiAgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICAgIGdhdGhlcihjYXBhY2l0eSwgc2NvcmUsIGhhcHB5OnByaWRlKSAlPiUKICAgICAgZ3JvdXBfYnkoY2hhcmFjdGVyLCBjYXBhY2l0eSkgJT4lCiAgICAgIGZpbHRlcighc2NvcmUgJWluJSBib3hwbG90LnN0YXRzKHNjb3JlLCAyLjUpJG91dCkgJT4lCiAgICAgIHNwcmVhZChjYXBhY2l0eSwgc2NvcmUpICU+JQogICAgICBhcnJhbmdlKGNoYXJhY3Rlciwgc3ViaWQpCiAgICAKICB9CiAgCiAgIyBmaWx0ZXIgY2hhcmFjdGVycyBpZiBkZXNpcmVkCiAgaWYoaXMuZWxlbWVudCgibm9uZSIsIGNob3NlbkV4Y2x1ZGUpKSB7fSBlbHNlIHsKICAgIAogICAgZF9jbGVhbiA8LSBkX2NsZWFuICU+JQogICAgICBmaWx0ZXIoIWNoYXJhY3RlciAlaW4lIGNob3NlbkV4Y2x1ZGUpCiAgICAKICAgIH0KICAgIAogICMgZmlsdGVyIGl0ZW1zIGlmIGRlc2lyZWQKICBpZihpcy5lbGVtZW50KCJub25lIiwgY2hvc2VuRXhjbHVkZUl0ZW0pKSB7fSBlbHNlIHsKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUKICAgICAgZHBseXI6OmZpbHRlcighY2FwYWNpdHkgJWluJSBjaG9zZW5FeGNsdWRlSXRlbSkKICB9CiAgCiAgIyBkcm9wIHRyaWFscyA8MjUwIG1zCiAgZF9jbGVhbiA8LSBkX2NsZWFuICU+JQogICAgZmlsdGVyKHJ0ID49IDI1MCB8IGlzLm5hKHJ0KSkKICAKICAjIGNlbnRlciByZXNwb25zZSB2YXJpYWJsZQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIikgewogICAgZF9jbGVhbiA8LSBkX2NsZWFuICU+JQogICAgICBtdXRhdGUocmVzcG9uc2VOdW1DID0gcmVzcG9uc2VOdW0gLSA0KQogIH0gZWxzZSB7CiAgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICAgIG11dGF0ZShyZXNwb25zZU51bUMgPSByZXNwb25zZU51bSAtIDAuNSkKICB9CgogICAgIyByZW5hbWUgY2hhcmFjdGVyIG5hbWUgdmFyaWFibGVzCiAgaWYoImNoYXJOYW1lIiAlaW4lIG5hbWVzKGRfY2xlYW4pKSB7CiAgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lIHJlbmFtZShjaGFyYWN0ZXIgPSBjaGFyTmFtZSkKICB9CiAgCiAgIyBjbGVhbnVwCiAgZF9jbGVhbiA8LSBkX2NsZWFuICU+JQogICAgZmlsdGVyKCFpcy5uYShzdWJpZCksICFpcy5uYShjaGFyYWN0ZXIpLCAhaXMubmEoY2FwYWNpdHkpKQogIAogICMgcmV0dXJuIGNsZWFuZWQgZGF0YXNldAogIHJldHVybihkX2NsZWFuKQp9CgojIG1ha2UgZnVuY3Rpb24gZm9yIHN0cmlwcGluZyBkYXRhZnJhbWVzIGZvciBkaW1lbnNpb24gcmVkdWNhdGlvbgptYWtlRFJERiA8LSBmdW5jdGlvbihkYXRhc291cmNlLCBjaG9zZW5Db25kaXRpb24pIHsKICAKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA1Iil7ZCA8LSBkNX0KCiAgIyBmaWx0ZXIgYnkgY2hhcmFjdGVyIGlmIHNwZWNpZmllZAogIGlmKGNob3NlbkNvbmRpdGlvbiAlaW4lIGMoImJlZXRsZSIsICJyb2JvdCIpKSB7CiAgICBkIDwtIGQgJT4lIGZpbHRlcihjaGFyYWN0ZXIgPT0gY2hvc2VuQ29uZGl0aW9uKQogIH0KCiAgIyBtYWtlIHN0cmlwcGVkIGRhdGFmcmFtZSBmb3IgZGltZW5zaW9uIHJlZHVjYXRpb24gYW5hbHlzZXMKICBkX3N0cmlwIDwtIGQgJT4lCiAgICBmaWx0ZXIoIWlzLm5hKGNoYXJhY3RlciksICFpcy5uYShzdWJpZCksICFpcy5uYShjYXBhY2l0eSksIGNhcGFjaXR5ICE9ICIiKSAlPiUKICAgIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogICAgc2VsZWN0KHN1YmlkLCBjYXBhY2l0eSwgcmVzcG9uc2VOdW0pICU+JQogICAgc3ByZWFkKGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgICByZW1vdmVfcm93bmFtZXMoKSAlPiUKICAgIGNvbHVtbl90b19yb3duYW1lcyh2YXIgPSAic3ViaWQiKQoKICAjIHJldHVybiBzdHJpcHBlZCBkYXRhZnJhbWUKICByZXR1cm4oZF9zdHJpcCkKfQoKIyBtYWtlIGRlbW9ncmFwaGljcyBmdW5jdGlvbnMKZGVtb1NhbXBsZVNpemUgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA1Iil7ZCA8LSBkNX0KCiAgIyBnZXQgZGlzdGluY3Qgc3ViaWRzCiAgc2FtcGxlX3NpemUgPC0gZCAlPiUgZGlzdGluY3Qoc3ViaWQsIGNoYXJhY3RlcikgJT4lIGNvdW50KGNoYXJhY3RlcikgJT4lIGRhdGEuZnJhbWUoKQoKICAjIGFkZCB0b3RhbCBzYW1wbGUgc2l6ZSAgCiAgc2FtcGxlX3NpemUgPC0gcmJpbmQoc2FtcGxlX3NpemUgJT4lIG11dGF0ZShjaGFyYWN0ZXIgPSBhcy5jaGFyYWN0ZXIoY2hhcmFjdGVyKSksCiAgICAgICAgICAgICAgICAgICAgICAgYyhjaGFyYWN0ZXIgPSAiYWxsIiwgbiA9IGQgJT4lIGRpc3RpbmN0KHN1YmlkKSAlPiUgY291bnQoKSAlPiUgYXMubnVtZXJpYygpKSkKICAKICAjIHJldHVybiBkYXRhZnJhbWUKICByZXR1cm4oc2FtcGxlX3NpemUpCn0KZGVtb0R1cmF0aW9uIDwtIGZ1bmN0aW9uKGRhdGFzb3VyY2UpIHsKCiAgIyBzZXQgdGFyZ2V0IGRhdGFzZXQKICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxIil7ZCA8LSBkMX0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYiIpe2QgPC0gZDFifQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFjIil7ZCA8LSBkMWN9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMiIpe2QgPC0gZDJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMyIpe2QgPC0gZDN9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgNCIpe2QgPC0gZDR9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgNSIpe2QgPC0gZDV9CgogICMgZ2V0IHNhbXBsZSBzaXplIHBlciBjaGFyYWN0ZXIKICBkdXJhdGlvbiA8LSBkICU+JQogICAgZGlzdGluY3Qoc3ViaWQsIGNoYXJhY3RlciwgZHVyYXRpb24pICU+JQogICAgbXV0YXRlKGR1cmF0aW9uID0gYXMubnVtZXJpYyhkdXJhdGlvbikpICU+JQogICAgZ3JvdXBfYnkoY2hhcmFjdGVyKSAlPiUKICAgIHN1bW1hcmlzZShtaW5fZHVyYXRpb24gPSBtaW4oZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWF4X2R1cmF0aW9uID0gbWF4KGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1lZGlhbl9kdXJhdGlvbiA9IG1lZGlhbihkdXJhdGlvbiwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWFuX2R1cmF0aW9uID0gbWVhbihkdXJhdGlvbiwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBzZF9kdXJhdGlvbiA9IHNkKGR1cmF0aW9uLCBuYS5ybSA9IFQpKQoKICAjIGFkZCB0b3RhbCBkdXJhdGlvbgogIGFsbCA8LSBkICU+JQogICAgZGlzdGluY3Qoc3ViaWQsIGNoYXJhY3RlciwgZHVyYXRpb24pICU+JQogICAgbXV0YXRlKGR1cmF0aW9uID0gYXMubnVtZXJpYyhkdXJhdGlvbikpICU+JQogICAgc3VtbWFyaXNlKG1pbl9kdXJhdGlvbiA9IG1pbihkdXJhdGlvbiwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtYXhfZHVyYXRpb24gPSBtYXgoZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVkaWFuX2R1cmF0aW9uID0gbWVkaWFuKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1lYW5fZHVyYXRpb24gPSBtZWFuKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNkX2R1cmF0aW9uID0gc2QoZHVyYXRpb24sIG5hLnJtID0gVCkpICU+JQogICAgbXV0YXRlKGNoYXJhY3RlciA9ICJhbGwiKQogIAogIGR1cmF0aW9uIDwtIHJiaW5kKGR1cmF0aW9uLCBhbGwpICMgbm90IHN1cmUgd2h5IGZ1bGxfam9pbiBkb2Vzbid0IHdvcmsgICAgCgogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihkdXJhdGlvbikKfQpkZW1vQWdlIDwtIGZ1bmN0aW9uKGRhdGFzb3VyY2UpIHsKCiAgIyBzZXQgdGFyZ2V0IGRhdGFzZXQKICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxIil7ZCA8LSBkMX0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYiIpe2QgPC0gZDFifQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFjIil7ZCA8LSBkMWN9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMiIpe2QgPC0gZDJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMyIpe2QgPC0gZDN9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgNCIpe2QgPC0gZDR9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgNSIpe2QgPC0gZDV9CgogICMgZ2V0IHNhbXBsZSBzaXplIHBlciBjaGFyYWN0ZXIKICBhZ2UgPC0gZCAlPiUKICAgIGRpc3RpbmN0KHN1YmlkLCBjaGFyYWN0ZXIsIGFnZSkgJT4lCiAgICBtdXRhdGUoYWdlID0gYXMubnVtZXJpYyhhZ2UpKSAlPiUKICAgIGdyb3VwX2J5KGNoYXJhY3RlcikgJT4lCiAgICBzdW1tYXJpc2UobWluX2FnZSA9IG1pbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWF4X2FnZSA9IG1heChhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVkaWFuX2FnZSA9IG1lZGlhbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVhbl9hZ2UgPSBtZWFuKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBzZF9hZ2UgPSBzZChhZ2UsIG5hLnJtID0gVCkpCgogICMgYWRkIHRvdGFsIGFnZQogIGFsbCA8LSBkICU+JQogICAgZGlzdGluY3Qoc3ViaWQsIGNoYXJhY3RlciwgYWdlKSAlPiUKICAgIG11dGF0ZShhZ2UgPSBhcy5udW1lcmljKGFnZSkpICU+JQogICAgc3VtbWFyaXNlKG1pbl9hZ2UgPSBtaW4oYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1heF9hZ2UgPSBtYXgoYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1lZGlhbl9hZ2UgPSBtZWRpYW4oYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1lYW5fYWdlID0gbWVhbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgc2RfYWdlID0gc2QoYWdlLCBuYS5ybSA9IFQpKSAlPiUKICAgIG11dGF0ZShjaGFyYWN0ZXIgPSAiYWxsIikKICBhZ2UgPC0gZnVsbF9qb2luKGFnZSwgYWxsKQoKICAjIHJldHVybiBkYXRhZnJhbWUKICByZXR1cm4oYWdlKQp9CmRlbW9HZW5kZXIgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA1Iil7ZCA8LSBkNX0KCiAgIyBnZXQgZ2VuZGVyIHBlciBjaGFyYWN0ZXIgYW5kIG92ZXJhbGwKICBnZW5kZXIgPC0gZGF0YS5mcmFtZShhZGRtYXJnaW5zKHdpdGgoZCAlPiUgZGlzdGluY3Qoc3ViaWQsIGNoYXJhY3RlciwgZ2VuZGVyKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlKGNoYXJhY3RlciwgZ2VuZGVyKSkpKSAlPiUKICAgIGZpbHRlcihnZW5kZXIgIT0gIlN1bSIpICU+JQogICAgcmVuYW1lKG4gPSBGcmVxKQogIAogIGdlbmRlciA8LSBnZW5kZXIgJT4lCiAgICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGlmZWxzZShjaGFyYWN0ZXIgPT0gIlN1bSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxsIiwgYXMuY2hhcmFjdGVyKGNoYXJhY3RlcikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJiZWV0bGUiLCAicm9ib3QiLCAiYWxsIikpKSAlPiUKICAgIGFycmFuZ2UoY2hhcmFjdGVyLCBnZW5kZXIpICU+JQogICAgc3ByZWFkKGdlbmRlciwgbikKICAKICAjIHJldHVybiBkYXRhZnJhbWUKICByZXR1cm4oZ2VuZGVyKQp9CmRlbW9SYWNlIDwtIGZ1bmN0aW9uKGRhdGFzb3VyY2UpIHsKCiAgIyBzZXQgdGFyZ2V0IGRhdGFzZXQKICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxIil7ZCA8LSBkMX0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYiIpe2QgPC0gZDFifQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFjIil7ZCA8LSBkMWN9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMiIpe2QgPC0gZDJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMyIpe2QgPC0gZDN9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgNCIpe2QgPC0gZDR9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgNSIpe2QgPC0gZDV9CgogICMgZ2V0IHJhY2UgcGVyIGNoYXJhY3RlciBhbmQgb3ZlcmFsbAogIHJhY2UgPC0gZGF0YS5mcmFtZShhZGRtYXJnaW5zKHdpdGgoZCAlPiUgZGlzdGluY3Qoc3ViaWQsIGNoYXJhY3RlciwgcmFjZV9jYXQpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlKGNoYXJhY3RlciwgcmFjZV9jYXQpKSkpICU+JQogICAgZmlsdGVyKHJhY2VfY2F0ICE9ICJTdW0iKSAlPiUKICAgIHJlbmFtZShuID0gRnJlcSkKCiAgICByYWNlIDwtIHJhY2UgJT4lCiAgICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoaWZlbHNlKGNoYXJhY3RlciA9PSAiU3VtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFsbCIsIGFzLmNoYXJhY3RlcihjaGFyYWN0ZXIpKSkpICU+JQogICAgICBhcnJhbmdlKGNoYXJhY3RlciwgcmFjZV9jYXQpICU+JQogICAgICBzcHJlYWQocmFjZV9jYXQsIG4pCiAgCiAgIyByZXR1cm4gZGF0YWZyYW1lCiAgcmV0dXJuKHJhY2UpCn0KCiMgcGxvdHRpbmcgZnVuY3Rpb25zCm1ha2VGYWNldExhYnMgPC0gZnVuY3Rpb24oZGZfcGxvdHRpbmcpIHsKICBmYWNldF9sYWJlbHMgPC0gYXJyYXkoKQogIGRmX3Bsb3R0aW5nIDwtIGRmX3Bsb3R0aW5nICU+JSBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpCiAgZm9yKGkgaW4gMTpsZW5ndGgobGV2ZWxzKGRmX3Bsb3R0aW5nJGNoYXJhY3RlcikpKSB7CiAgICBkZiA8LSBkZl9wbG90dGluZyAlPiUgZmlsdGVyKGNoYXJhY3RlciA9PSBsZXZlbHMoZGZfcGxvdHRpbmckY2hhcmFjdGVyKVtpXSkgJT4lCiAgICAgIHNlbGVjdChjaGFyYWN0ZXIsIG4pICU+JSB1bmlxdWUoKQogICAgZmFjZXRfbGFiZWxzW2ldIDwtIHBhc3RlMChkZiRjaGFyYWN0ZXIsICIgKG4gPSAiLCBkZiRuLCAiKSIpCiAgfQogIG5hbWVzKGZhY2V0X2xhYmVscykgPC0gbGV2ZWxzKGRmX3Bsb3R0aW5nJGNoYXJhY3RlcikKICByZXR1cm4oZmFjZXRfbGFiZWxzKQp9CmBgYAoKYGBge3IgbW9kZWxpbmcgZGVjaXNpb25zfQojIHJlbW92ZSBvdXRsaWVycz8KY2hvc2VuT3V0bGllckhhbmRsaW5nIDwtICJrZWVwIgojIGNob3Nlbk91dGxpZXJIYW5kbGluZyA8LSAicmVtb3ZlIgoKIyBleGNsdWRlIGFueSBjb25kaXRpb25zIChjaGFyYWN0ZXJzKT8KY2hvc2VuRXhjbHVkZSA8LSAibm9uZSIKIyBjaG9zZW5FeGNsdWRlIDwtIGMoInN0YXBsZXIiLCAiY2FyIiwgImNvbXB1dGVyIikKCiMgZXhjbHVkZSBhbnkgaXRlbXMgKG1lbnRhbCBjYXBhY2l0aWVzKT8KIyBjaG9zZW5FeGNsdWRlSXRlbSA8LSAibm9uZSIKIyBjaG9zZW5FeGNsdWRlSXRlbSA8LSAiY29tcHV0YXRpb25zIgpjaG9zZW5FeGNsdWRlSXRlbSA8LSBjKCJtZXRhbCIsICJvbl9vZmYiKQoKIyBOT1RFOiBhbHdheXMgY2hvb3NlIG1pbmltYWwgcmVzaWR1YWwgKGZtID0gIm1pbnJlcyIpIGluc3RlYWQgb2YgTUwgYmVjYXVzZSBvZiBub24tbm9ybWFsaXR5CgojIGZvciBFRkFzLCB3aGF0IGtpbmQgb2YgY29ycmVsYXRpb24/CmNob3NlbkNvclR5cGUgPC0gImNvciIgIyBwZWFyc29uIGNvcnJlbGF0aW9uCiMgY2hvc2VuQ29yVHlwZSA8LSAicG9seSIgIyBwb2x5Y2hvcmljIGNvcnJlbGF0aW9uCgojIGZvciBFRkFzLCB3aGF0IGtpbmQgb2Ygcm90YXRpb24/CiMgY2hvc2VuUm90VHlwZSA8LSAidmFyaW1heCIgIyB2YXJpbWF4IHJvdGF0aW9uCmNob3NlblJvdFR5cGUgPC0gIm9ibGltaW4iICMgb2JsaW1pbiByb3RhdGlvbgojIGNob3NlblJvdFR5cGUgPC0gIm5vbmUiICMgbm8gcm90YXRpb24KCmRhdGEuZnJhbWUoImNvbmRpdGlvbnNFeGNsdWRlZCIgPSBjaG9zZW5FeGNsdWRlLAogICAgICAgICAgICJvdXRsaWVySGFuZGxpbmciID0gY2hvc2VuT3V0bGllckhhbmRsaW5nLAogICAgICAgICAgICJFRkFfY29ycmVsYXRpb24iID0gY2hvc2VuQ29yVHlwZSwKICAgICAgICAgICAiRUZBX3JvdGF0aW9uIiA9IGNob3NlblJvdFR5cGUpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMgRGF0YSBwcmVwYXJhdGlvbgoKYGBge3IgZGF0YSB1cGxvYWR9CiMgc3R1ZHkgMSAoMjAxNi0wNy0wNiwgYWR1bHRzLCAyIGNvbmRpdGlvbnMsIDMtcG9pbnQgc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJtYWtlIHBsYW5zIikKZF9yYXdfc3R1ZHkxIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDFfMjAxNi0wNi0wNV9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxIiwgYWdlX2dyb3VwID0gImFkdWx0cyIpICU+JSBzZWxlY3QoLVgpCgojIHN0dWR5IDFiICgyMDE3LTA3LTE5LCBhZHVsdHMsIDIgY29uZGl0aW9ucywgNy1wb2ludCBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTFiIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDJfMjAxNi0wNy0xOV9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxYiIsIGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUgc2VsZWN0KC1YKQoKIyBzdHVkeSAxYyAoMjAxNi0xMi0wOCwgYWR1bHRzLCAyIGNvbmRpdGlvbnMsIDMtcG9pbnQgc2NhbGUsICJoYXZlIGZyZWUgd2lsbCIgYW5kICJoYXZlIGludGVudGlvbnMiKQpkX3Jhd19zdHVkeTFjIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDNfMjAxNi0xMi0wOF9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxYyIsIGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUgc2VsZWN0KC1YKQoKIyBzdHVkeSAyIChKdW5lIC0gRGVjZW1iZXIgMjAxNiwgNy05eW8sIDIgY29uZGl0aW9ucywgMy1wb2ludC1zY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTIgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvY2hpbGRyZW4vcnVuLTAxXzIwMTctMDctMjRfYW5vbnltaXplZC5jc3YiKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgMiIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbl83OSIpICU+JSBzZWxlY3QoLVgpCgojIHN0dWR5IDMgKEphbnVhcnkgLSBKdW5lIDIwMTcsIDctOXlvLCA5IGNvbmRpdGlvbnMsIDMtcG9pbnQtc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJtYWtlIHBsYW5zIikKZF9yYXdfc3R1ZHkzIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2NoaWxkcmVuL3J1bi0wMl8yMDE3LTA4LTA4X2Fub255bWl6ZWQuY3N2IikgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDMiLCBhZ2VfZ3JvdXAgPSAiY2hpbGRyZW5fNzkiKSAlPiUgc2VsZWN0KC1YKSAlPiUKICBtdXRhdGUoZG9iID0gcGFyc2VfZGF0ZXRpbWUoZGF0ZU9mQmlydGgsICIlbS8lZC8leSIpLAogICAgICAgICBkb3QgPSBwYXJzZV9kYXRldGltZShnc3ViKCIyMDE3IiwgIjE3IiwgZGF0ZU9mVGVzdCksICIlbS8lZC8leSIpLCAKICAgICAgICAgYWdlID0gaW50ZXJ2YWwoc3RhcnQgPSBkb2IsIGVuZCA9IGRvdCkgLyBkdXJhdGlvbihudW0gPSAxLCB1bml0cyA9ICJ5ZWFycyIpKSAlPiUKICBzZWxlY3QoLWRhdGVPZkJpcnRoLCAtZGF0ZU9mVGVzdCwgLWRvYiwgLWRvdCkKCiMgc3R1ZHkgNCAoTWF5IDIwMTcgLSBwcmVzZW50LCA0LTZ5bywgOSBjb25kaXRpb25zLCAzLXBvaW50LXNjYWxlLCAiZGVjaWRlIHdoYXQgdG8gZG8iIGFuZCAibWFrZSBwbGFucyIpCmRfcmF3X3N0dWR5NCA8LSByZWFkLmNzdigiL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL0RpbWtpZC9kaW1raWQvZGF0YS9jaGlsZHJlbi9ydW4tMDNfMjAxNy0wOC0yMV9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSA0IiwgYWdlX2dyb3VwID0gImNoaWxkcmVuXzQ2IikgJT4lIHNlbGVjdCgtWCkgJT4lCiAgbXV0YXRlKGRvYiA9IHBhcnNlX2RhdGV0aW1lKGRhdGVPZkJpcnRoLCAiJW0vJWQvJXkiKSwKICAgICAgICAgZG90ID0gcGFyc2VfZGF0ZXRpbWUoZ3N1YigiMjAxNyIsICIxNyIsIGRhdGVPZlRlc3QpLCAiJW0vJWQvJXkiKSwgCiAgICAgICAgIGFnZSA9IGludGVydmFsKHN0YXJ0ID0gZG9iLCBlbmQgPSBkb3QpIC8gZHVyYXRpb24obnVtID0gMSwgdW5pdHMgPSAieWVhcnMiKSkgJT4lCiAgc2VsZWN0KC1kYXRlT2ZCaXJ0aCwgLWRhdGVPZlRlc3QsIC1kb2IsIC1kb3QpCgojIHN0dWR5IDUgKEZhbGwgMjAxNyAtIHByZXNlbnQsIDUuNS03LjV5byAocGx1cyksIDkgY29uZGl0aW9ucywgMy1wb2ludC1zY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTUgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvY2hpbGRyZW4vcnVuLTA0XzIwMTctMTAtMTBfYW5vbnltaXplZC5jc3YiKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgNSIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbl81LjU3LjUiKSAlPiUgc2VsZWN0KC1YKSAlPiUKICBtdXRhdGUoZG9iID0gcGFyc2VfZGF0ZXRpbWUoZGF0ZU9mQmlydGgsICIlbS8lZC8leSIpLAogICAgICAgICBkb3QgPSBwYXJzZV9kYXRldGltZShnc3ViKCIyMDE3IiwgIjE3IiwgZGF0ZU9mVGVzdCksICIlbS8lZC8leSIpLCAKICAgICAgICAgYWdlID0gaW50ZXJ2YWwoc3RhcnQgPSBkb2IsIGVuZCA9IGRvdCkgLyBkdXJhdGlvbihudW0gPSAxLCB1bml0cyA9ICJ5ZWFycyIpKSAlPiUKICBzZWxlY3QoLWRhdGVPZkJpcnRoLCAtZGF0ZU9mVGVzdCwgLWRvYiwgLWRvdCkKYGBgCgpgYGB7ciBkYXRhIGNsZWFudXB9CiMgY2xlYW4gdXAgZGF0YXNldHMKZDEgPC0gY2xlYW51cCgic3R1ZHkgMSIsICJhZHVsdHMiKQpkMWIgPC0gY2xlYW51cCgic3R1ZHkgMSIsICJhZHVsdHMiKQpkMWMgPC0gY2xlYW51cCgic3R1ZHkgMSIsICJhZHVsdHMiKQpkMiA8LSBjbGVhbnVwKCJzdHVkeSAyIiwgImNoaWxkcmVuIikKZDMgPC0gY2xlYW51cCgic3R1ZHkgMyIsICJjaGlsZHJlbiIpCmQ0IDwtIGNsZWFudXAoInN0dWR5IDQiLCAiY2hpbGRyZW4iKQpkNSA8LSBjbGVhbnVwKCJzdHVkeSA1IiwgImNoaWxkcmVuIikKCiMgdHdlYWsgYnkgaGFuZApkMiA8LSBkMiAlPiUKICBmaWx0ZXIoIWlzLm5hKGFnZSkpICU+JQogIGZpbHRlcihhZ2UgPj0gNywgYWdlIDwgMTApICU+JQogIGZpbHRlcihjaGFyYWN0ZXIgIT0gImVsZXBoYW50IikKCmQzX291dHNpZGVhZ2UgPC0gZDMgJT4lIGZpbHRlcihhZ2UgPCA3IHwgYWdlID49IDEwKSAlPiUgZGlzdGluY3Qoc3ViaWQpCgpkMyA8LSBkMyAlPiUKICBmaWx0ZXIoIWlzLm5hKGNoYXJhY3RlciksIGNoYXJhY3RlciAhPSAiIikgJT4lCiAgZmlsdGVyKCFzdWJpZCAlaW4lIGQzX291dHNpZGVhZ2Ukc3ViaWQpICU+JQogICMgZmlsdGVyKGFnZSA+PSA3LCBhZ2UgPCAxMCkgJT4lCiAgbXV0YXRlKGV0aG5pY2l0eSA9IGdzdWIoIiBTTiIsICIiLCBldGhuaWNpdHkpKSAlPiUKICBtdXRhdGUocmFjZV9jYXQgPSBpZmVsc2UoZ3JlcGwoImJpbmciLCB0b2xvd2VyKHRlc3RpbmdTaXRlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShldGhuaWNpdHkgPT0gIkEiLCAiZWFzdF9hc2lhbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZXRobmljaXR5ID09ICJDIiB8IGV0aG5pY2l0eSA9PSAiQ2oiLCAid2hpdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShldGhuaWNpdHkgPT0gIkkiLCAic291dGhfYXNpYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZXRobmljaXR5ID09ICJNRSIsICJtaWRkbGVfZWFzdGVybiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZXRobmljaXR5ID09ICJBZiIsICJibGFjayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGV0aG5pY2l0eSA9PSAiSCIsICJoaXNwYW5pYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiICIsIGV0aG5pY2l0eSkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVwbCgiLyIsIGV0aG5pY2l0eSksICJtdWx0aXJhY2lhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZSh0b2xvd2VyKGV0aG5pY2l0eSkgPT0gImJsYWNrIG9yIGFmcmljYW4gYW1lcmljYW4iLCAiYmxhY2siLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHRvbG93ZXIoZXRobmljaXR5KSA9PSAiaGlzcGFuaWMgb3IgbGF0aW5vL2EiLCAiaGlzcGFuaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZSh0b2xvd2VyKGV0aG5pY2l0eSkgPT0gImVhc3QgYXNpYW4iLCAiZWFzdF9hc2lhbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZSh0b2xvd2VyKGV0aG5pY2l0eSkgPT0gIm5hdGl2ZSBhbWVyaWNhbiwgYW1lcmljYW4gaW5kaWFuLCBvciBhbGFza2EgbmF0aXZlIiwgIm5hdGl2ZV9hbWVyaWNhbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UodG9sb3dlcihldGhuaWNpdHkpID09ICJ3aGl0ZSIgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9sb3dlcihldGhuaWNpdHkpID09ICJ3aGl0ZSwgY2F1Y2FzaWFuLCBvciBldXJvcGVhbiBhbWVyaWNhbiIsICJ3aGl0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHRvbG93ZXIoZXRobmljaXR5KSA9PSAic291dGggb3Igc291dGhlYXN0IGFzaWFuIiB8IHRvbG93ZXIoZXRobmljaXR5KSA9PSAic291dGggYXNpYW4iLCAic291dGhfYXNpYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UodG9sb3dlcihldGhuaWNpdHkpID09ICIiIHwgaXMubmEoZXRobmljaXR5KSwgTkEsICJtdWx0aXJhY2lhbCIpKSkpKSkpKSkKCmQ0IDwtIGQ0ICU+JQogIGZpbHRlcighaXMubmEoY2hhcmFjdGVyKSwgY2hhcmFjdGVyICE9ICIiKSAlPiUKICBmaWx0ZXIoYWdlID49IDQsIGFnZSA8IDcpICU+JQogIG11dGF0ZShldGhuaWNpdHkgPSBnc3ViKCIgU04iLCAiIiwgZXRobmljaXR5KSkgJT4lCiAgbXV0YXRlKHJhY2VfY2F0ID0gaWZlbHNlKGdyZXBsKCJiaW5nIiwgdG9sb3dlcih0ZXN0aW5nU2l0ZSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZXRobmljaXR5ID09ICJBIiwgImVhc3RfYXNpYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGV0aG5pY2l0eSA9PSAiQyIgfCBldGhuaWNpdHkgPT0gIkNqIiwgIndoaXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZXRobmljaXR5ID09ICJJIiwgInNvdXRoX2FzaWFuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGV0aG5pY2l0eSA9PSAiTUUiLCAibWlkZGxlX2Vhc3Rlcm4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGV0aG5pY2l0eSA9PSAiQWYiLCAiYmxhY2siLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShldGhuaWNpdHkgPT0gIkgiLCAiaGlzcGFuaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIiAiLCBldGhuaWNpdHkpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcGwoIi8iLCBldGhuaWNpdHkpLCAibXVsdGlyYWNpYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UodG9sb3dlcihldGhuaWNpdHkpID09ICJibGFjayBvciBhZnJpY2FuIGFtZXJpY2FuIiwgImJsYWNrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZSh0b2xvd2VyKGV0aG5pY2l0eSkgPT0gImhpc3BhbmljIG9yIGxhdGluby9hIiwgImhpc3BhbmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UodG9sb3dlcihldGhuaWNpdHkpID09ICJlYXN0IGFzaWFuIiwgImVhc3RfYXNpYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UodG9sb3dlcihldGhuaWNpdHkpID09ICJuYXRpdmUgYW1lcmljYW4sIGFtZXJpY2FuIGluZGlhbiwgb3IgYWxhc2thIG5hdGl2ZSIsICJuYXRpdmVfYW1lcmljYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHRvbG93ZXIoZXRobmljaXR5KSA9PSAid2hpdGUiIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvbG93ZXIoZXRobmljaXR5KSA9PSAid2hpdGUsIGNhdWNhc2lhbiwgb3IgZXVyb3BlYW4gYW1lcmljYW4iLCAid2hpdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZSh0b2xvd2VyKGV0aG5pY2l0eSkgPT0gInNvdXRoIG9yIHNvdXRoZWFzdCBhc2lhbiIgfCB0b2xvd2VyKGV0aG5pY2l0eSkgPT0gInNvdXRoIGFzaWFuIiwgInNvdXRoX2FzaWFuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHRvbG93ZXIoZXRobmljaXR5KSA9PSAiIiB8IGlzLm5hKGV0aG5pY2l0eSksIE5BLCAibXVsdGlyYWNpYWwiKSkpKSkpKSkpCgpkNSA8LSBkNSAlPiUKICBmaWx0ZXIoIWlzLm5hKGNoYXJhY3RlciksIGNoYXJhY3RlciAhPSAiIikgJT4lCiAgZmlsdGVyKGFnZSA+PSA1LjUsIGFnZSA8IDcuNSkgJT4lCiAgbXV0YXRlKGV0aG5pY2l0eSA9IGdzdWIoIiBTTiIsICIiLCBldGhuaWNpdHkpKSAlPiUKICBtdXRhdGUocmFjZV9jYXQgPSBpZmVsc2UoZ3JlcGwoImJpbmciLCB0b2xvd2VyKHRlc3RpbmdTaXRlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShldGhuaWNpdHkgPT0gIkEiLCAiZWFzdF9hc2lhbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZXRobmljaXR5ID09ICJDIiB8IGV0aG5pY2l0eSA9PSAiQ2oiLCAid2hpdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShldGhuaWNpdHkgPT0gIkkiLCAic291dGhfYXNpYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZXRobmljaXR5ID09ICJNRSIsICJtaWRkbGVfZWFzdGVybiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZXRobmljaXR5ID09ICJBZiIsICJibGFjayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGV0aG5pY2l0eSA9PSAiSCIsICJoaXNwYW5pYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiICIsIGV0aG5pY2l0eSkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVwbCgiLyIsIGV0aG5pY2l0eSksICJtdWx0aXJhY2lhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZSh0b2xvd2VyKGV0aG5pY2l0eSkgPT0gImJsYWNrIG9yIGFmcmljYW4gYW1lcmljYW4iLCAiYmxhY2siLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHRvbG93ZXIoZXRobmljaXR5KSA9PSAiaGlzcGFuaWMgb3IgbGF0aW5vL2EiLCAiaGlzcGFuaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZSh0b2xvd2VyKGV0aG5pY2l0eSkgPT0gImVhc3QgYXNpYW4iLCAiZWFzdF9hc2lhbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZSh0b2xvd2VyKGV0aG5pY2l0eSkgPT0gIm5hdGl2ZSBhbWVyaWNhbiwgYW1lcmljYW4gaW5kaWFuLCBvciBhbGFza2EgbmF0aXZlIiwgIm5hdGl2ZV9hbWVyaWNhbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UodG9sb3dlcihldGhuaWNpdHkpID09ICJ3aGl0ZSIgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9sb3dlcihldGhuaWNpdHkpID09ICJ3aGl0ZSwgY2F1Y2FzaWFuLCBvciBldXJvcGVhbiBhbWVyaWNhbiIsICJ3aGl0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHRvbG93ZXIoZXRobmljaXR5KSA9PSAic291dGggb3Igc291dGhlYXN0IGFzaWFuIiB8IHRvbG93ZXIoZXRobmljaXR5KSA9PSAic291dGggYXNpYW4iLCAic291dGhfYXNpYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UodG9sb3dlcihldGhuaWNpdHkpID09ICIiIHwgaXMubmEoZXRobmljaXR5KSwgTkEsICJtdWx0aXJhY2lhbCIpKSkpKSkpKSkKYGBgCgpgYGB7ciBkYXRhZnJhbWVzIGZvciBkaW1lbnNpb24gcmVkdWNhdGlvbn0KIyBtYWtlIGRhdGFmcmFtZXMgZm9yIHMxCiMgZDFfYmVldGxlIDwtIG1ha2VEUkRGKCJzdHVkeSAxIiwgImJlZXRsZSIpCiMgZDFfcm9ib3QgPC0gbWFrZURSREYoInN0dWR5IDEiLCAicm9ib3QiKQpkMV9hbGwgPC0gbWFrZURSREYoInN0dWR5IDEiLCAiYWxsIikKCiMgbWFrZSBkYXRhZnJhbWVzIGZvciBmb2xsb3ctdXAgc3R1ZGllcyB0byBzMQpkMWJfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSAxYiIsICJhbGwiKQpkMWNfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSAxYyIsICJhbGwiKQoKIyBtYWtlIGRhdGFmcmFtZXMgZm9yIHN0dWR5IDIKIyBkMl9iZWV0bGUgPC0gbWFrZURSREYoInN0dWR5IDIiLCAiYmVldGxlIikKIyBkMl9yb2JvdCA8LSBtYWtlRFJERigic3R1ZHkgMiIsICJyb2JvdCIpCmQyX2FsbCA8LSBtYWtlRFJERigic3R1ZHkgMiIsICJhbGwiKQoKIyBtYWtlIGRhdGFmcmFtZXMgZm9yIHN0dWR5IDMKIyBkM19iZWV0bGUgPC0gbWFrZURSREYoInN0dWR5IDMiLCAiYmVldGxlIikKIyBkM19yb2JvdCA8LSBtYWtlRFJERigic3R1ZHkgMyIsICJyb2JvdCIpCmQzX2FsbCA8LSBtYWtlRFJERigic3R1ZHkgMyIsICJhbGwiKQoKIyBtYWtlIGRhdGFmcmFtZXMgZm9yIHN0dWR5IDQKZDRfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSA0IiwgImFsbCIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMgQW5hbHlzaXMgcGxhbgoKRm9yIGFsbCBzdHVkaWVzIHdlIGNvbmR1Y3QgZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIHVzaW5nIFBlYXJzb24gY29ycmVsYXRpb25zIHRvIGZpbmQgbWluaW11bSByZXNpZHVhbCBzb2x1dGlvbnMuIAoKRm9yIGVhY2ggc3R1ZHksIHdlIGZpcnN0IGV4YW1pbmUgbWF4aW1hbCB1bnJvdGF0ZWQgYW5kIHJvdGF0ZWQgc29sdXRpb25zLiBUbyBkZXRlcm1pbmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGZhY3RvcnMgdG8gZXh0cmFjdCwgd2UgdXNlIHRoZSBmb2xsb3dpbmcgcnVsZSBvZiB0aHVtYjogV2l0aCAkcCQgb2JzZXJ2YXRpb25zIHBlciBwYXJ0aWNpcGFudCwgd2UgY2FuIGV4dHJhY3QgYSBtYXhpbXVtIG9mICRrJCBmYWN0b3JzLCB3aGVyZSAkKHAtaykqMiA+IHArayQsIGkuZS4sICRrIDwgcC8zJC4gVGh1cywgd2l0aCA0MCBtZW50YWwgY2FwYWNpdHkgaXRlbXMsIHdlIGNhbiBleHRyYWN0IGEgbWF4aW11bSBvZiAxMyBmYWN0b3JzLgoKVG8gZGV0ZXJtaW5lIGhvdyBtYW55IGZhY3RvcnMgdG8gcmV0YWluLCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBwcmVzZXQgcmV0ZW50aW9uIGNyaXRlcmlhLCBjb25zaWRlcmluZyB0aGUgdW5yb3RhdGVkIG1heGltYWwgc29sdXRpb24gKHVubGVzcyBvdGhlcndpc2Ugbm90ZWQpOgoKICAtIEVhY2ggZmFjdG9yIG11c3QgaGF2ZSBhbiBlaWdlbnZhbHVlID4xLjAuCiAgLSBFYWNoIGZhY3RvciBtdXN0IGluZGl2aWR1YWxseSBhY2NvdW50IGZvciA+NSUgb2YgdGhlIHRvdGFsIHZhcmlhbmNlIGluIHRoZSBtYXhpbWFsIG1vZGVsLgogIC0gQWZ0ZXIgcm90YXRpb24sIGVhY2ggZmFjdG9yIG11c3QgYmUgdGhlIGRvbWluYW50IGZhY3RvciAoaS5lLiwgdGhlIGZhY3RvciB3aXRoIHRoZSBoaWdoZXN0IGZhY3RvciBsb2FkaW5nKSBmb3Ig4omlMSBtZW50YWwgY2FwYWNpdHkgaXRlbS4KCldlIHRoZW4gZXhhbWluZSBhbmQgaW50ZXJwcmV0IHZhcmltYXgtcm90YXRlZCBzb2x1dGlvbnMsIGV4dHJhY3Rpbmcgb25seSB0aGUgbnVtYmVyIG9mIGZhY3RvcnMgdGhhdCBtZWV0IHRoZXNlIGNyaXRlcmlhLgoKIyBTdHVkeSAxCgpTdHVkeSBpbmZvcm1hdGlvbjoKCiogRGVzaWduOiAyIGNvbmRpdGlvbnMgKGJlZXRsZSwgcm9ib3QpLCAzLXBvaW50IHJlc3BvbnNlIHNjYWxlLCAiZGVjaWRlIHdoYXQgdG8gZG8iIGFuZCAiaGF2ZSBpbnRlbnRpb25zIgoqIFBvcHVsYXRpb246IGFkdWx0cwoqIERhdGUgY29uZHVjdGVkOiAyMDE2LTA3LTA2IChNVHVyaykKCiMjIERlbW9ncmFwaGljcwoKYGBge3IgczEgZGVtb2dyYXBoaWNzfQojIG1ha2UgZGVtb2dyYXBoaWNzIHRhYmxlcwpkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgMSIpCmRlbW9EdXJhdGlvbigic3R1ZHkgMSIpCmRlbW9BZ2UoInN0dWR5IDEiKQpkZW1vR2VuZGVyKCJzdHVkeSAxIikKZGVtb1JhY2UoInN0dWR5IDEiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyBFeHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMKCiMjIyBTdGVwIDE6IFJ1biBtYXhpbWFsIEVGQSAod2l0aG91dCBhbmQgd2l0aCByb3RhdGlvbikKCmBgYHtyIHMxIGFsbCBubyByb3RhdGlvbn0KIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDFfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QxX2FsbF91bnJvdGF0ZWQgPC0gZmEoZDFfYWxsLCAxMywgcm90YXRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDFfYWxsX3Vucm90YXRlZCkKCiMgZXhhbWluZSBlaWdlbnZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkCmVmYV9kMV9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzIDwtIHByaW50KGVmYV9kMV9hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2QxX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMgPC0gZWZhX2QxX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgJT4lCiAgZmlsdGVyKFNTLmxvYWRpbmdzID4gMSwgUHJvcG9ydGlvbi5FeHBsYWluZWQgPiAwLjA1KSAlPiUKICBjb3VudCgpICU+JQogIGFzLm51bWVyaWMoKQplZmFfZDFfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHMxIGFsbCByb3RhdGlvbn0KZWZhX2QxX2FsbF9yb3RhdGVkX21heCA8LSBmYShkMV9hbGwsIDEzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKZWZhX2QxX2FsbF9yb3RhdGVkIDwtIGZhKGQxX2FsbCwgZWZhX2QxX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgojIGNoZWNrIHRoYXQgZWFjaCBvZiB0aGVzZSBmYWN0b3JzIGlzIHRoZSBkb21pbmFudCBmYWN0b3IgZm9yIGF0IGxlYXN0IG9uZSBtZW50YWwgY2FwYWNpdHkgaXRlbQplZmFfZDFfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgPC0gZmEuc29ydChsb2FkaW5ncyhlZmFfZDFfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kMV9hbGxfcm90YXRlZF9sb2FkaW5ncwoKIyBkcm9wIGFueSBmYWN0b3JzIHdoZXJlIG4gPCAxCmVmYV9kMV9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKQoKIyBzZXQgbnVtYmVyIG9mIGZhY3RvcnMgdG8gZXh0cmFjdApuZmFjdG9yc19kMV9hbGwgPC0gZWZhX2QxX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApICU+JQogIG5yb3coKQpuZmFjdG9yc19kMV9hbGwKYGBgCgojIyMgU3RlcCAyOiBSdW4gRUZBIHdpdGggdmFyaW1heCByb3RhdGlvbgoKYGBge3IgczEgYWxsIHZhcmltYXggcm90YXRpb259CiMgcnVuIEVGQSB3aXRoIHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMV9hbGxfcm90YXRlZE4gPC0gZmEoZDFfYWxsLCBuZmFjdG9yc19kMV9hbGwsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMV9hbGxfcm90YXRlZE4pCgojIGdldCBsb2FkaW5ncyBmb3IgZWFjaCBmYWN0b3IKZWZhX2QxX2FsbF9yb3RhdGVkTl9sb2FkaW5ncyA8LSBsb2FkaW5ncyhlZmFfZDFfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIyMgRmFjdG9yIGxvYWRpbmdzIHRhYmxlCgpgYGB7ciBzMSBsb2FkaW5ncyB0YWJsZX0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMV9hbGxfcm90YXRlZE4pKVtdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk0iKSksIGZ1bnMocm91bmQyKSkKYGBgCgojIFN0dWR5IDIKClN0dWR5IGluZm9ybWF0aW9uOgoKKiBEZXNpZ246IDIgY29uZGl0aW9ucyAoYmVldGxlLCByb2JvdCksIDMtcG9pbnQgcmVzcG9uc2Ugc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJoYXZlIGludGVudGlvbnMiCiogUG9wdWxhdGlvbjogNy05eW8gY2hpbGRyZW4KKiBEYXRlIGNvbmR1Y3RlZDogSnVuZSAtIERlY2VtYmVyIDIwMTYKCiMjIERlbW9ncmFwaGljcwoKYGBge3IgczIgZGVtb2dyYXBoaWNzfQojIG1ha2UgZGVtb2dyYXBoaWNzIHRhYmxlcwpkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgMiIpCiMgZGVtb0R1cmF0aW9uKCJzdHVkeSAyIikKZGVtb0FnZSgic3R1ZHkgMiIpCmRlbW9HZW5kZXIoInN0dWR5IDIiKQojIGRlbW9SYWNlKCJzdHVkeSAyIikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMgRXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzCgojIyMgU3RlcCAxOiBSdW4gbWF4aW1hbCBFRkEgKHdpdGhvdXQgYW5kIHdpdGggcm90YXRpb24pCgpgYGB7ciBzMiBhbGwgbm8gcm90YXRpb259CiMgZXhhbWluZSBzY3JlZSBwbG90CmZhLnBhcmFsbGVsKGQyX2FsbCkKCiMgcnVuIEVGQSB3aXRob3V0IHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMl9hbGxfdW5yb3RhdGVkIDwtIGZhKGQyX2FsbCwgMTMsIHJvdGF0ZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QyX2FsbF91bnJvdGF0ZWQpCgojIGV4YW1pbmUgZWlnZW52YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZAplZmFfZDJfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyA8LSBwcmludChlZmFfZDJfYWxsX3Vucm90YXRlZCkkVmFjY291bnRlZCAlPiUKICB0KCkgJT4lCiAgZGF0YS5mcmFtZSgpCgojIGNvdW50IGZhY3RvcnMgd2l0aCBlaWdlbnZhbHVlcyA+IDEgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCA+IDUlCmVmYV9kMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzIDwtIGVmYV9kMl9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzICU+JQogIGZpbHRlcihTUy5sb2FkaW5ncyA+IDEsIFByb3BvcnRpb24uRXhwbGFpbmVkID4gMC4wNSkgJT4lCiAgY291bnQoKSAlPiUKICBhcy5udW1lcmljKCkKZWZhX2QyX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMKYGBgCgpgYGB7ciBzMiBhbGwgcm90YXRpb259CmVmYV9kMl9hbGxfcm90YXRlZF9tYXggPC0gZmEoZDJfYWxsLCAxMywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCmVmYV9kMl9hbGxfcm90YXRlZCA8LSBmYShkMl9hbGwsIGVmYV9kMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2QyX2FsbF9yb3RhdGVkX2xvYWRpbmdzIDwtIGZhLnNvcnQobG9hZGluZ3MoZWZhX2QyX2FsbF9yb3RhdGVkKVtdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSkgJT4lCiAgbXV0YXRlKGxvYWRpbmdfYWJzID0gYWJzKGxvYWRpbmcpKSAlPiUKICBncm91cF9ieShjYXBhY2l0eSkgJT4lCiAgdG9wX24oMSwgbG9hZGluZ19hYnMpICU+JQogIHVuZ3JvdXAoKQplZmFfZDJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkKCiMgc2V0IG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QKbmZhY3RvcnNfZDJfYWxsIDwtIGVmYV9kMl9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDJfYWxsCmBgYAoKIyMjIFN0ZXAgMjogUnVuIEVGQSB3aXRoIHZhcmltYXggcm90YXRpb24KCmBgYHtyIHMyIGFsbCB2YXJpbWF4IHJvdGF0aW9ufQojIHJ1biBFRkEgd2l0aCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDJfYWxsX3JvdGF0ZWROIDwtIGZhKGQyX2FsbCwgbmZhY3RvcnNfZDJfYWxsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDJfYWxsX3JvdGF0ZWROKQoKIyBnZXQgbG9hZGluZ3MgZm9yIGVhY2ggZmFjdG9yCmVmYV9kMl9hbGxfcm90YXRlZE5fbG9hZGluZ3MgPC0gbG9hZGluZ3MoZWZhX2QyX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lIAogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyMjIEZhY3RvciBsb2FkaW5ncyB0YWJsZQoKYGBge3IgczIgbG9hZGluZ3MgdGFibGV9CmRhdGEuZnJhbWUobG9hZGluZ3MoZmEuc29ydChlZmFfZDJfYWxsX3JvdGF0ZWROKSlbXSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJNIikpLCBmdW5zKHJvdW5kMikpCmBgYAoKIyBTdHVkeSAzIAoKU3R1ZHkgaW5mb3JtYXRpb246CgoqIERlc2lnbjogNyBjb25kaXRpb25zIChiZWV0bGUsIHJvYm90LCAuLi4pICsgMiBmb2xsb3ctdXAgY29uZGl0aW9ucywgMy1wb2ludCByZXNwb25zZSBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgImhhdmUgaW50ZW50aW9ucyIKKiBQb3B1bGF0aW9uOiA3LTl5byBjaGlsZHJlbgoqIERhdGUgY29uZHVjdGVkOiBKYW51YXJ5IC0gSnVuZSAyMDE3CgojIyBEZW1vZ3JhcGhpY3MKCmBgYHtyIHMzIGRlbW9ncmFwaGljc30KIyBtYWtlIGRlbW9ncmFwaGljcyB0YWJsZXMKZGVtb1NhbXBsZVNpemUoInN0dWR5IDMiKQojIGRlbW9EdXJhdGlvbigic3R1ZHkgMyIpCmRlbW9BZ2UoInN0dWR5IDMiKQojIGRlbW9HZW5kZXIoInN0dWR5IDMiKQojIGRlbW9SYWNlKCJzdHVkeSAzIikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMgRXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzCgojIyMgU3RlcCAxOiBSdW4gbWF4aW1hbCBFRkEgKHdpdGhvdXQgYW5kIHdpdGggcm90YXRpb24pCgpgYGB7ciBzMyBhbGwgbm8gcm90YXRpb259CiMgZXhhbWluZSBzY3JlZSBwbG90CmZhLnBhcmFsbGVsKGQzX2FsbCkKCiMgcnVuIEVGQSB3aXRob3V0IHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kM19hbGxfdW5yb3RhdGVkIDwtIGZhKGQzX2FsbCwgNiwgcm90YXRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDNfYWxsX3Vucm90YXRlZCkKCiMgZXhhbWluZSBlaWdlbnZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkCmVmYV9kM19hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzIDwtIHByaW50KGVmYV9kM19hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2QzX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMgPC0gZWZhX2QzX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgJT4lCiAgZmlsdGVyKFNTLmxvYWRpbmdzID4gMSwgUHJvcG9ydGlvbi5FeHBsYWluZWQgPiAwLjA1KSAlPiUKICBjb3VudCgpICU+JQogIGFzLm51bWVyaWMoKQplZmFfZDNfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHMzIGFsbCByb3RhdGlvbn0KZWZhX2QzX2FsbF9yb3RhdGVkX21heCA8LSBmYShkM19hbGwsIDEzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKZWZhX2QzX2FsbF9yb3RhdGVkIDwtIGZhKGQzX2FsbCwgZWZhX2QzX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgojIGNoZWNrIHRoYXQgZWFjaCBvZiB0aGVzZSBmYWN0b3JzIGlzIHRoZSBkb21pbmFudCBmYWN0b3IgZm9yIGF0IGxlYXN0IG9uZSBtZW50YWwgY2FwYWNpdHkgaXRlbQplZmFfZDNfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgPC0gZmEuc29ydChsb2FkaW5ncyhlZmFfZDNfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kM19hbGxfcm90YXRlZF9sb2FkaW5ncwoKIyBkcm9wIGFueSBmYWN0b3JzIHdoZXJlIG4gPCAxCmVmYV9kM19hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKQoKIyBzZXQgbnVtYmVyIG9mIGZhY3RvcnMgdG8gZXh0cmFjdApuZmFjdG9yc19kM19hbGwgPC0gZWZhX2QzX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApICU+JQogIG5yb3coKQpuZmFjdG9yc19kM19hbGwKYGBgCgojIyMgU3RlcCAyOiBSdW4gRUZBIHdpdGggdmFyaW1heCByb3RhdGlvbgoKYGBge3IgczMgYWxsIHZhcmltYXggcm90YXRpb259CiMgcnVuIEVGQSB3aXRoIHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kM19hbGxfcm90YXRlZE4gPC0gZmEoZDNfYWxsLCBuZmFjdG9yc19kM19hbGwsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kM19hbGxfcm90YXRlZE4pCgojIGdldCBsb2FkaW5ncyBmb3IgZWFjaCBmYWN0b3IKZWZhX2QzX2FsbF9yb3RhdGVkTl9sb2FkaW5ncyA8LSBsb2FkaW5ncyhlZmFfZDNfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIyMgRmFjdG9yIGxvYWRpbmdzIHRhYmxlCgpgYGB7ciBzMyBsb2FkaW5ncyB0YWJsZX0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kM19hbGxfcm90YXRlZE4pKVtdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk0iKSksIGZ1bnMocm91bmQyKSkKYGBgCgojIyMgU3Vic2NhbGVzCgojIyMjIFJlbGlhYmlsaXR5IChhbmQgaW50ZXJjb3JyZWxhdGlvbnMgLSBzZWUgYWxwaGEpCgpgYGB7ciBzMyBzdWJzY2FsZSByZWxpYWJpbGl0eX0KIyBDcm9uYmFjaCdzIGFscGhhIChzdWJzY2FsZXMpCmtleXMubGlzdCA8LSBsaXN0KEhFQVJUID0gYygicHJpZGUiLCAiZGVwcmVzc2VkIiwgImRpc3Jlc3BlY3RlZCIsICJndWlsdCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1iYXJyYXNzZWQiLCAiaGFwcHkiLCAibG92ZSIpLAogICAgICAgICAgICAgICAgICBCT0RZID0gYygiaHVuZ3J5IiwgIm9kb3JzIiwgImZlYXIiLCAicGFpbiIsICJ0aXJlZCIsICJhbmdyeSIsICJuYXVzZWF0ZWQiKSwKICAgICAgICAgICAgICAgICAgTUlORCA9IGMoInJlYXNvbmluZyIsICJjaG9pY2VzIiwgInJlbWVtYmVyaW5nIiwgInRlbXBlcmF0dXJlIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zY2lvdXMiLCAiZGVwdGgiKSkgCnNjb3JlcyA8LSBzY29yZUl0ZW1zKGtleXMubGlzdCwgZDNfYWxsLCBtaW4gPSAwLCBtYXggPSAxKSAgIyBvciBqdXN0IHVzZSB0aGUga2V5cy5saXQKIyBzdW1tYXJ5KHNjb3JlcykKc2NvcmVzCgojIG9tZWdhCm9tZWdhKGQzX2FsbCwgcGxvdCA9IEYpCmBgYAoKIyBTdHVkeSA0CgpTdHVkeSBpbmZvcm1hdGlvbjoKCiogRGVzaWduOiA3IGNvbmRpdGlvbnMgKGJlZXRsZSwgcm9ib3QsIC4uLikgKyAyIGZvbGxvdy11cCBjb25kaXRpb25zIChkb2xsLCB0ZWRkeSBiZWFyKSwgMy1wb2ludCByZXNwb25zZSBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgImhhdmUgaW50ZW50aW9ucyIKKiBQb3B1bGF0aW9uOiA0LTZ5byBjaGlsZHJlbgoqIERhdGUgY29uZHVjdGVkOiBNYXJjaCAyMDE3IC0gcHJlc2VudAoKIyMgRGVtb2dyYXBoaWNzCgpgYGB7ciBzNCBkZW1vZ3JhcGhpY3N9CiMgbWFrZSBkZW1vZ3JhcGhpY3MgdGFibGVzCmRlbW9TYW1wbGVTaXplKCJzdHVkeSA0IikKIyBkZW1vRHVyYXRpb24oInN0dWR5IDQiKQpkZW1vQWdlKCJzdHVkeSA0IikKIyBkZW1vR2VuZGVyKCJzdHVkeSA0IikKZGVtb1JhY2UoInN0dWR5IDQiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyBFeHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMKCiMjIyBTdGVwIDE6IFJ1biBtYXhpbWFsIEVGQSAod2l0aG91dCBhbmQgd2l0aCByb3RhdGlvbikKCmBgYHtyIHM0IGFsbCBubyByb3RhdGlvbn0KIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDRfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2Q0X2FsbF91bnJvdGF0ZWQgPC0gZmEoZDRfYWxsLCA2LCByb3RhdGUgPSAibm9uZSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDRfYWxsX3Vucm90YXRlZCkKCiMgZXhhbWluZSBlaWdlbnZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkCmVmYV9kNF9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzIDwtIHByaW50KGVmYV9kNF9hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2Q0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMgPC0gZWZhX2Q0X2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgJT4lCiAgZmlsdGVyKFNTLmxvYWRpbmdzID4gMSwgUHJvcG9ydGlvbi5FeHBsYWluZWQgPiAwLjA1KSAlPiUKICBjb3VudCgpICU+JQogIGFzLm51bWVyaWMoKQplZmFfZDRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHM0IGFsbCByb3RhdGlvbn0KZWZhX2Q0X2FsbF9yb3RhdGVkX21heCA8LSBmYShkNF9hbGwsIDYsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgplZmFfZDRfYWxsX3JvdGF0ZWQgPC0gZmEoZDRfYWxsLCBlZmFfZDRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kNF9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kNF9hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2Q0X2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2Q0X2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2Q0X2FsbCA8LSBlZmFfZDRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2Q0X2FsbApgYGAKCiMjIyBTdGVwIDI6IFJ1biBFRkEgd2l0aCB2YXJpbWF4IHJvdGF0aW9uCgpgYGB7ciBzNCBhbGwgdmFyaW1heCByb3RhdGlvbn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2Q0X2FsbF9yb3RhdGVkTiA8LSBmYShkNF9hbGwsIG5mYWN0b3JzX2Q0X2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2Q0X2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDRfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kNF9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMjIyBGYWN0b3IgbG9hZGluZ3MgdGFibGUKCmBgYHtyIHM0IGxvYWRpbmdzIHRhYmxlfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2Q0X2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCiMgQmlnIGZhY3RvciBsb2FkaW5ncyB0YWJsZSBmb3IgYWxsIHN0dWRpZXMgKFN0dWRpZXMgMS00KQoKYGBge3IgYWxsIHN0dWRpZXMgbG9hZGluZ3MgdGFibGV9CiMgbWFudWFsbHkgc2V0IDMgZmFjdG9ycwpvcmRlcl9zMV9tYW51YWwgPC0gbG9hZGluZ3MoZmEuc29ydChmYShkMV9hbGwsIG5mYWN0b3JzID0gMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSkpKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlcjFfbWFudWFsIikgJT4lCiAgcmVuYW1lKHMxX2hlYXJ0ID0gTVIyLCBzMV9ib2R5ID0gTVIxLCBzMV9taW5kID0gTVIzKQoKb3JkZXJfczEgPC0gbG9hZGluZ3MoZmEuc29ydChlZmFfZDFfYWxsX3JvdGF0ZWROKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIxIikgJT4lCiAgcmVuYW1lKHMxX2hlYXJ0ID0gTVIyLCBzMV9ib2R5ID0gTVIxLCBzMV9taW5kID0gTVIzKQoKb3JkZXJfczIgPC0gbG9hZGluZ3MoZmEuc29ydChlZmFfZDJfYWxsX3JvdGF0ZWROKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpICU+JQogIHJlbmFtZShzMl9ib2R5ID0gTVIyLCBzMl9oZWFydCA9IE1SMSwgczJfbWluZCA9IE1SMykKCm9yZGVyX3MzIDwtIGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QzX2FsbF9yb3RhdGVkTikpW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKSAlPiUKICByZW5hbWUoczNfYm9keSA9IE1SMSwgczNfaGVhcnQgPSBNUjIsIHMzX21pbmQgPSBNUjMpCgpvcmRlcl9zNCA8LSBsb2FkaW5ncyhmYS5zb3J0KGVmYV9kNF9hbGxfcm90YXRlZE4pKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcmVuYW1lKHM0X2JvZHkgPSBNUjEsIAogICAgICAgICAjIHM0X2hlYXJ0ID0gTVIzLCAKICAgICAgICAgczRfbWluZCA9IE1SMikKCiMgbWFudWFsbHkgc2V0IDMgZmFjdG9ycwpvcmRlcl9zNF9tYW51YWwgPC0gbG9hZGluZ3MoZmEuc29ydChmYShkMV9hbGwsIG5mYWN0b3JzID0gMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSkpKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlcjFfbWFudWFsIikgJT4lCiAgcmVuYW1lKHM0X2hlYXJ0ID0gTVIyLCBzNF9ib2R5ID0gTVIxLCBzNF9taW5kID0gTVIzKQoKYmlnVGFibGUgPC0gb3JkZXJfczFfbWFudWFsICU+JSAjIGNvdWxkIHN1YnN0aXR1dGUgb3JkZXJfczEKICBmdWxsX2pvaW4ob3JkZXJfczIpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zMykgJT4lCiAgZnVsbF9qb2luKG9yZGVyX3M0X21hbnVhbCkgJT4lICMgY291bGQgc3Vic3RpdHV0ZSBvcmRlcl9zNAogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJzIikpLCBmdW5zKHJvdW5kMikpICU+JQogIHNlbGVjdChvcmRlcjFfbWFudWFsLCAjIGNvdWxkIHN1YmlzdGl0dXRlIG9yZGVyX3MxCiAgICAgICAgIGNhcGFjaXR5LCBlbmRzX3dpdGgoImhlYXJ0IiksIGVuZHNfd2l0aCgiYm9keSIpLCBlbmRzX3dpdGgoIm1pbmQiKSkgCgpiaWdUYWJsZQpgYGAKCiMgRmlndXJlcwoKYGBge3IgcGxvdHRpbmcgc2V0dXAgY2hhcmFjdGVyIG1lYW5zLCBpbmNsdWRlID0gRn0KIyBib290c3RyYXAgOTUlIENJcyBmb3IgcmF0aW5ncyBieSBjaGFyYWN0ZXIgKG5vbnBhcmFtZXRyaWMpCiMgc3R1ZHkgMQpjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczEgPC0gZDEgJT4lIAogIHNlbGVjdChzdWJpZCwgY2hhcmFjdGVyLCBjYXBhY2l0eSwgcmVzcG9uc2VOdW0pICU+JQogIGdyb3VwX2J5KGNoYXJhY3RlciwgY2FwYWNpdHkpICU+JQogIGRvKGRhdGEuZnJhbWUocmJpbmQoc21lYW4uY2wuYm9vdCguJHJlc3BvbnNlTnVtKSkpKSAlPiUKICBmdWxsX2pvaW4oZGVtb1NhbXBsZVNpemUoInN0dWR5IDEiKSAlPiUgZmlsdGVyKGNoYXJhY3RlciAhPSAiYWxsIikpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxIikKCiMgc3R1ZHkgMgpjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczIgPC0gZDIgJT4lIAogIHNlbGVjdChzdWJpZCwgY2hhcmFjdGVyLCBjYXBhY2l0eSwgcmVzcG9uc2VOdW0pICU+JQogIGdyb3VwX2J5KGNoYXJhY3RlciwgY2FwYWNpdHkpICU+JQogIGRvKGRhdGEuZnJhbWUocmJpbmQoc21lYW4uY2wuYm9vdCguJHJlc3BvbnNlTnVtKSkpKSAlPiUKICBmdWxsX2pvaW4oZGVtb1NhbXBsZVNpemUoInN0dWR5IDIiKSAlPiUgZmlsdGVyKGNoYXJhY3RlciAhPSAiYWxsIikpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAyIikKCiMgc3R1ZHkgMwpjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczMgPC0gZDMgJT4lIAogIHNlbGVjdChzdWJpZCwgY2hhcmFjdGVyLCBjYXBhY2l0eSwgcmVzcG9uc2VOdW0pICU+JQogIGdyb3VwX2J5KGNoYXJhY3RlciwgY2FwYWNpdHkpICU+JQogIGRvKGRhdGEuZnJhbWUocmJpbmQoc21lYW4uY2wuYm9vdCguJHJlc3BvbnNlTnVtKSkpKSAlPiUKICBmdWxsX2pvaW4oZGVtb1NhbXBsZVNpemUoInN0dWR5IDMiKSAlPiUgZmlsdGVyKGNoYXJhY3RlciAhPSAiYWxsIikpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAzIikKCiMgc3R1ZHkgNApjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczQgPC0gZDQgJT4lIAogIHNlbGVjdChzdWJpZCwgY2hhcmFjdGVyLCBjYXBhY2l0eSwgcmVzcG9uc2VOdW0pICU+JQogIGdyb3VwX2J5KGNoYXJhY3RlciwgY2FwYWNpdHkpICU+JQogIGRvKGRhdGEuZnJhbWUocmJpbmQoc21lYW4uY2wuYm9vdCguJHJlc3BvbnNlTnVtKSkpKSAlPiUKICBmdWxsX2pvaW4oZGVtb1NhbXBsZVNpemUoInN0dWR5IDQiKSAlPiUgZmlsdGVyKGNoYXJhY3RlciAhPSAiYWxsIikpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSA0IikKYGBgCgpgYGB7ciBwbG90dGluZyBzZXR1cCBjaGFyYWN0ZXIgbWVhbnMgbWVyZ2UsIGluY2x1ZGUgPSBGfQpjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfYWxsIDwtIGNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMSAlPiUKICBmdWxsX2pvaW4oY2hhcl9wbG90dGluZ19yYXRpbmdzX3MyKSAlPiUKICBmdWxsX2pvaW4oY2hhcl9wbG90dGluZ19yYXRpbmdzX3MzKSAlPiUKICBmdWxsX2pvaW4oY2hhcl9wbG90dGluZ19yYXRpbmdzX3M0KSAlPiUKICBmaWx0ZXIoIWlzLm5hKGNoYXJhY3RlcikpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSBmYWN0b3Ioc3R1ZHkpLAogICAgICAgICBjb25kaXRpb24gPSBmYWN0b3IoY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwgInJvYm90IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgImVsZXBoYW50IikpKQpgYGAKCmBgYHtyIHBsb3R0aW5nIHNldHVwIGNhcGFjaXR5IHdvcmRpbmdzLCBpbmNsdWRlID0gRn0KY2hhcl9wbG90dGluZ193b3JkaW5ncyA8LSBjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfYWxsICU+JQogIHVuZ3JvdXAoKSAlPiUKICBzZWxlY3QoY2FwYWNpdHkpICU+JQogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZSh3b3JkaW5nID0gZmFjdG9yKAogICAgcmVjb2RlKGNhcGFjaXR5LAogICAgICAgICAgIGhhcHB5ID0gImZlZWwgaGFwcHkiLAogICAgICAgICAgIGRlcHJlc3NlZCA9ICJmZWVsIHNhZCIsCiAgICAgICAgICAgZmVhciA9ICJmZWVsIHNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiZ2V0IGFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImZlZWwgY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIgc291bmRzIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIHRoaW5ncyIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAic2Vuc2UgdGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCB0aGluZ3MiLAogICAgICAgICAgIGRlcHRoID0gInNlbnNlLi4uIGNsb3NlIGJ5IG9yIGZhciBhd2F5IiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAiZG8gbWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAiaGF2ZSB0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQgaG93IHRvIGRvIHRoaW5ncyIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIgdGhpbmdzIiwKICAgICAgICAgICBiZWxpZWZzID0gImhhdmUgYmVsaWVmcy4uLiIsCiAgICAgICAgICAgaHVuZ3J5ID0gImdldCBodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gImZlZWwgdGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAiZmVlbCBwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAiZmVlbCBzaWNrLi4uIiwKICAgICAgICAgICBzYWZlID0gImZlZWwgc2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJmZWVsIGxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIHdpdGggc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZmVlbCBndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJnZXQgaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSB3aGF0IHRvIGRvIiwKICAgICAgICAgICBjaG9pY2VzID0gIm1ha2UgY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAiaGF2ZSBzZWxmLWNvbnRyb2wuLi4iLAogICAgICAgICAgIGludGVudGlvbnMgPSAibWFrZSBwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJoYXZlIGdvYWxzLi4uIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYmUgYXdhcmUgb2YgdGhpbmdzIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gImJlIGF3YXJlIG9mIGl0c2VsZiIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJoYXZlIGRlc2lyZXMuLi4iLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImZlZWwgZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJ1bmRlcnN0YW5kIGhvdyBzb21lYm9keSBlbHNlIGlzIGZlZWxpbmciLAogICAgICAgICAgIGpveSA9ICJmZWVsIGpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAia25vdyB3aGF0J3MgbmljZSBhbmQgd2hhdCdzIG1lYW4iLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gImhhdmUgYSBwZXJzb25hbGl0eS4uLiIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAiZmVlbCBwbGVhc3VyZS4uLiIsCiAgICAgICAgICAgcHJpZGUgPSAiZmVlbCBwcm91ZCIpKSkKYGBgCgpgYGB7ciBwbG90dGluZyBzZXR1cCBsb2FkaW5ncywgaW5jbHVkZSA9IEZ9CiMgbWVyZ2Ugd2l0aCBsb2FkaW5ncywgb3JkZXJpbmdzLCBhbmQgZG9taW5hbnQgZmFjdG9ycyBmcm9tIGVhY2ggc3R1ZHkgCmNoYXJfcGxvdHRpbmcgPC0gY2hhcl9wbG90dGluZ19yYXRpbmdzX2FsbCAlPiUKICBmdWxsX2pvaW4oY2hhcl9wbG90dGluZ193b3JkaW5ncykgJT4lCiAgZnVsbF9qb2luKG9yZGVyX3MxICU+JQogICAgICAgICAgICAgIHJlbmFtZShzMV9NUjEgPSBzMV9ib2R5LCBzMV9NUjIgPSBzMV9oZWFydCwgczFfTVIzID0gczFfbWluZCkgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHMxX01SMV9hYnMgPSBhYnMoczFfTVIxKSwKICAgICAgICAgICAgICAgICAgICAgczFfTVIyX2FicyA9IGFicyhzMV9NUjIpLAogICAgICAgICAgICAgICAgICAgICBzMV9NUjNfYWJzID0gYWJzKHMxX01SMyksCiAgICAgICAgICAgICAgICAgICAgIHMxX2ZhY3RvciA9IAogICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMV9NUjFfYWJzID4gczFfTVIyX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfTVIxX2FicyA+IHMxX01SM19hYnMsICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMxX01SMl9hYnMgPiBzMV9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfTVIyX2FicyA+IHMxX01SM19hYnMsICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczFfTVIzX2FicyA+IHMxX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfTVIzX2FicyA+IHMxX01SMl9hYnMsICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgICAgICAgICAgICAgICAgICAgczFfY29sb3IgPSByZWNvZGUoczFfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIiA9ICIjNERBRjRBIiksCiAgICAgICAgICAgICAgICAgICAgIHMxX29yZGVyID0gYXMubnVtZXJpYyhvcmRlcjEpKSAlPiUKICAgICAgICAgICAgICBzZWxlY3QoLXMxX01SMV9hYnMsIC1zMV9NUjJfYWJzLCAtczFfTVIzX2FicykpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zMiAlPiUKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICAgICAgICAgICAgcmVuYW1lKHMyX01SMSA9IHMyX2hlYXJ0LCBzMl9NUjIgPSBzMl9ib2R5LCBzMl9NUjMgPSBzMl9taW5kKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczJfTVIxX2FicyA9IGFicyhzMl9NUjEpLAogICAgICAgICAgICAgICAgICAgICBzMl9NUjJfYWJzID0gYWJzKHMyX01SMiksCiAgICAgICAgICAgICAgICAgICAgIHMyX01SM19hYnMgPSBhYnMoczJfTVIzKSwKICAgICAgICAgICAgICAgICAgICAgczJfZmFjdG9yID0gCiAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMyX01SMV9hYnMgPiBzMl9NUjJfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMl9NUjFfYWJzID4gczJfTVIzX2FicywgIkJPRFkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczJfTVIyX2FicyA+IHMyX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMl9NUjJfYWJzID4gczJfTVIzX2FicywgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMl9NUjNfYWJzID4gczJfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMl9NUjNfYWJzID4gczJfTVIyX2FicywgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAogICAgICAgICAgICAgICAgICAgICBzMl9jb2xvciA9IHJlY29kZShzMl9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCT0RZIiA9ICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQVJUIiA9ICIjMzc3RUI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQiID0gIiM0REFGNEEiKSkgJT4lCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJzMl9vcmRlciIpICU+JQogICAgICAgICAgICAgIG11dGF0ZShzMl9vcmRlciA9IGFzLm51bWVyaWMoczJfb3JkZXIpKSAlPiUKICAgICAgICAgICAgICBzZWxlY3QoLXMyX01SMV9hYnMsIC1zMl9NUjJfYWJzLCAtczJfTVIzX2FicykpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zMyAlPiUKICAgICAgICAgICAgICByZW5hbWUoczNfTVIxID0gczNfaGVhcnQsIHMzX01SMiA9IHMzX2JvZHksIHMzX01SMyA9IHMzX21pbmQpICU+JQogICAgICAgICAgICAgIG11dGF0ZShzM19NUjFfYWJzID0gYWJzKHMzX01SMSksCiAgICAgICAgICAgICAgICAgICAgIHMzX01SMl9hYnMgPSBhYnMoczNfTVIyKSwKICAgICAgICAgICAgICAgICAgICAgczNfTVIzX2FicyA9IGFicyhzM19NUjMpLAogICAgICAgICAgICAgICAgICAgICBzM19mYWN0b3IgPSAKICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczNfTVIxX2FicyA+IHMzX01SMl9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzX01SMV9hYnMgPiBzM19NUjNfYWJzLCAiQk9EWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzM19NUjJfYWJzID4gczNfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzX01SMl9hYnMgPiBzM19NUjNfYWJzLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMzX01SM19hYnMgPiBzM19NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzX01SM19hYnMgPiBzM19NUjJfYWJzLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICAgICAgICAgICAgICAgICAgIHMzX2NvbG9yID0gcmVjb2RlKHMzX2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJPRFkiID0gIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQiID0gIiMzNzdFQjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIgPSAiIzREQUY0QSIpKSAlPiUKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4odmFyID0gInMzX29yZGVyIikgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHMzX29yZGVyID0gYXMubnVtZXJpYyhzM19vcmRlcikpICU+JQogICAgICAgICAgICAgIHNlbGVjdCgtczNfTVIxX2FicywgLXMzX01SMl9hYnMsIC1zM19NUjNfYWJzKSkgJT4lCiAgZnVsbF9qb2luKG9yZGVyX3M0ICU+JQogICAgICAgICAgICAgIHJlbmFtZShzNF9NUjEgPSBzNF9ib2R5LCBzNF9NUjIgPSBzNF9taW5kKSAlPiUgIywgczRfTVIzID0gczRfaGVhcnQpICU+JQogICAgICAgICAgICAgIG11dGF0ZShzNF9NUjFfYWJzID0gYWJzKHM0X01SMSksCiAgICAgICAgICAgICAgICAgICAgIHM0X01SMl9hYnMgPSBhYnMoczRfTVIyKSwKICAgICAgICAgICAgICAgICAgICAgIyBzNF9NUjNfYWJzID0gYWJzKHM0X01SMyksCiAgICAgICAgICAgICAgICAgICAgIHM0X2ZhY3RvciA9IAogICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzNF9NUjFfYWJzID4gczRfTVIyX2FicywgIkJPRFkiLCAiTUlORCIpLAogICAgICAgICAgICAgICAgICAgICAjIHM0X2ZhY3RvciA9IAogICAgICAgICAgICAgICAgICAgICAjICAgaWZlbHNlKHM0X01SMV9hYnMgPiBzNF9NUjJfYWJzICYKICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgIHM0X01SMV9hYnMgPiBzNF9NUjNfYWJzLCAiQk9EWSIsCiAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgaWZlbHNlKHM0X01SMl9hYnMgPiBzNF9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICBzNF9NUjJfYWJzID4gczRfTVIzX2FicywgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgaWZlbHNlKHM0X01SM19hYnMgPiBzNF9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgczRfTVIzX2FicyA+IHM0X01SMl9hYnMsICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAogICAgICAgICAgICAgICAgICAgICBzNF9jb2xvciA9IHJlY29kZShzNF9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCT0RZIiA9ICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQVJUIiA9ICIjMzc3RUI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQiID0gIiM0REFGNEEiKSkgJT4lCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJzNF9vcmRlciIpICU+JQogICAgICAgICAgICAgIG11dGF0ZShzNF9vcmRlciA9IGFzLm51bWVyaWMoczRfb3JkZXIpKSAlPiUKICAgICAgICAgICAgICBzZWxlY3QoLXM0X01SMV9hYnMsIC1zNF9NUjJfYWJzKSkgIywgLXM0X01SM19hYnMpKQoKIyBjb25maWd1cmUgcGxvdCBsYWJlbHMKbGFiZWxfZGZfczEgPC0gY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAxIikgJT4lIHNlbGVjdChjb25kaXRpb24sIG4pICU+JSB1bmlxdWUoKQpsYWJlbF9kZl9zMiA8LSBjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDIiKSAlPiUgc2VsZWN0KGNvbmRpdGlvbiwgbikgJT4lIHVuaXF1ZSgpCmxhYmVsX2RmX3MzIDwtIGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMyIpICU+JSBzZWxlY3QoY29uZGl0aW9uLCBuKSAlPiUgdW5pcXVlKCkKbGFiZWxfZGZfczQgPC0gY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSA0IikgJT4lIHNlbGVjdChjb25kaXRpb24sIG4pICU+JSB1bmlxdWUoKQoKZmFjZXRMYWJzX3MxIDwtIGdzdWIoIiBcXCgiLCAiXG4oIiwgbWFrZUZhY2V0TGFicyhjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDEiKSkpCmZhY2V0TGFic19zMiA8LSBnc3ViKCIgXFwoIiwgIlxuKCIsIG1ha2VGYWNldExhYnMoY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAyIikpKQpmYWNldExhYnNfczMgPC0gZ3N1YigiIFxcKCIsICJcbigiLCBtYWtlRmFjZXRMYWJzKGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMyIpKSkKZmFjZXRMYWJzX3M0IDwtIGdzdWIoIiBcXCgiLCAiXG4oIiwgbWFrZUZhY2V0TGFicyhjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDQiKSkpCgojIGNvbmZpZ3VyZSBjdXN0b20gcGFsZXR0ZQpteVBhbGV0dGUgPC0gYnJld2VyLnBhbCgzLCAiU2V0MSIpOyBuYW1lcyhteVBhbGV0dGUpIDwtIGMoIkhFQVJUIiwgIkJPRFkiLCAiTUlORCIpCgpwYWxldHRlX2Jhc2UgPC0gY2hhcl9wbG90dGluZyAlPiUgCiAgc2VsZWN0KGNhcGFjaXR5LCBlbmRzX3dpdGgoIl9mYWN0b3IiKSkgJT4lCiAgZGlzdGluY3QoKQojIGFkanVzdCBieSBoYW5kIGRlcGVuZGluZyBvbiBvcmRlciBvZiBmYWN0b3JzISEKcGFsZXR0ZV9zMSA8LSBjKHJlcChteVBhbGV0dGVbIk1JTkQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczFfZmFjdG9yID09ICJNSU5EIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiSEVBUlQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczFfZmFjdG9yID09ICJIRUFSVCIpICU+JSBjb3VudCgpKSwKICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkJPRFkiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczFfZmFjdG9yID09ICJCT0RZIikgJT4lIGNvdW50KCkpKQpwYWxldHRlX3MyIDwtIGMocmVwKG15UGFsZXR0ZVsiTUlORCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMl9mYWN0b3IgPT0gIk1JTkQiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJCT0RZIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMyX2ZhY3RvciA9PSAiQk9EWSIpICU+JSBjb3VudCgpKSwKICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkhFQVJUIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMyX2ZhY3RvciA9PSAiSEVBUlQiKSAlPiUgY291bnQoKSkpCnBhbGV0dGVfczMgPC0gYyhyZXAobXlQYWxldHRlWyJNSU5EIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMzX2ZhY3RvciA9PSAiTUlORCIpICU+JSBjb3VudCgpKSwKICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkJPRFkiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczNfZmFjdG9yID09ICJCT0RZIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiSEVBUlQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczNfZmFjdG9yID09ICJIRUFSVCIpICU+JSBjb3VudCgpKSkKIyBwYWxldHRlX3M0IDwtIGMocmVwKG15UGFsZXR0ZVsiTUlORCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzNF9mYWN0b3IgPT0gIk1JTkQiKSAlPiUgY291bnQoKSksCiMgICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkhFQVJUIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHM0X2ZhY3RvciA9PSAiSEVBUlQiKSAlPiUgY291bnQoKSksCiMgICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkJPRFkiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczRfZmFjdG9yID09ICJCT0RZIikgJT4lIGNvdW50KCkpKQpgYGAKCiMjIDNEIHNjYXR0ZXJwbG90cwoKRmFjdG9yIGxvYWRpbmdzIGZvciB0aGUgNDAgbWVudGFsIGNhcGFjaXRpZXMgb24gdGhlIHRocmVlIHJvdGF0ZWQgZmFjdG9ycyBpbiBTdHVkeSAxLiBJdGVtcyBhcmUgY29sb3JlZCBieSB0aGVpciBkb21pbmFudCBmYWN0b3IgbG9hZGluZzogSXRlbXMgdGhhdCBsb2FkZWQgbW9zdCBzdHJvbmdseSBvbiB0aGUgYm9keSBmYWN0b3IgKGJvZGlseSBzdGF0ZXMgYW5kIHdpbGwpIGFyZSBpbiByZWQ7IGl0ZW1zIHRoYXQgbG9hZGVkIG1vc3Qgc3Ryb25nbHkgb24gdGhlIGhlYXJ0IGZhY3RvciAoc29jaWFsLWVtb3Rpb25hbCBleHBlcmllbmNlcyBhbmQgbW9yYWxpdHkpIGFyZSBpbiBibHVlOyBhbmQgaXRlbXMgdGhhdCBsb2FkZWQgbW9zdCBzdHJvbmdseSBvbiB0aGUgbWluZCBmYWN0b3IgKHBlcmNlcHR1YWwtY29nbml0aXZlIGFiaWxpdGllcyBhbmQgZ29hbCBwdXJzdWl0KSBhcmUgaW4gZ3JlZW4uCgojIyMgU3R1ZHkgMSAoYWR1bHRzKQoKYGBge3IgZmlndXJlIDNkIHNjYXR0ZXIgczF9CiMgc2V0IHVwIGxhYmVscyBmb3IgcGxvdCAoc2hvcnRlbmVkIHZlcnNpb24gb2YgbWVudGFsIGNhcGFjaXR5IGl0ZW1zKQp3b3JkaW5nX3MxIDwtIGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHNlbGVjdChpdGVtKSAlPiUKICBtdXRhdGUod29yZGluZyA9IGZhY3RvcigKICAgIHJlY29kZShpdGVtLAogICAgICAgICAgIGhhcHB5ID0gImZlZWwgaGFwcHkiLAogICAgICAgICAgIGRlcHJlc3NlZCA9ICJmZWVsIHNhZCIsCiAgICAgICAgICAgZmVhciA9ICJmZWVsIHNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiZ2V0IGFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImZlZWwgY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIgc291bmRzIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIHRoaW5ncyIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAic2Vuc2UgdGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCB0aGluZ3MiLAogICAgICAgICAgIGRlcHRoID0gInNlbnNlIHdoZXRoZXIgc29tZXRoaW5nIGlzIGNsb3NlIGJ5IG9yIGZhciBhd2F5IiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAiZG8gbWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAiaGF2ZSB0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQgaG93IHRvIGRvIHRoaW5ncyIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIgdGhpbmdzIiwKICAgICAgICAgICBiZWxpZWZzID0gImhhdmUgYmVsaWVmcywgbGlrZSB3aGVuIHlvdSB0aGluayBzb21ldGhpbmcgaXMgdHJ1ZSIsCiAgICAgICAgICAgaHVuZ3J5ID0gImdldCBodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gImZlZWwgdGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAiZmVlbCBwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAiZmVlbCBzaWNrLCBsaWtlIHdoZW4geW91IGZlZWwgbGlrZSB5b3UgbWlnaHQgdGhyb3cgdXAiLAogICAgICAgICAgIHNhZmUgPSAiZmVlbCBzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImZlZWwgbG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUgd2l0aCBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBndWlsdCA9ICJmZWVsIGd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImdldCBodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIHdoYXQgdG8gZG8iLAogICAgICAgICAgIGNob2ljZXMgPSAibWFrZSBjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJoYXZlIHNlbGYtY29udHJvbCwgbGlrZSB3aGVuIHlvdSBzdG9wIHlvdXJzZWxmIGZyb20gZG9pbmcgc29tZXRoaW5nIHlvdSBzaG91bGRuJ3QgZG8iLAogICAgICAgICAgIGludGVudGlvbnMgPSAibWFrZSBwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJoYXZlIGdvYWxzLCBsaWtlIHdoZW4geW91J3JlIHdvcmtpbmcgaGFyZCB0byBkbyBzb21ldGhpbmcgb3IgbWFrZSBzb21ldGhpbmcgaGFwcGVuIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYmUgYXdhcmUgb2YgdGhpbmdzIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gImJlIGF3YXJlIG9mIGl0c2VsZiIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJoYXZlIGRlc2lyZXMsIGxpa2Ugd2hlbiB5b3UgcmVhbGx5IHdhbnQgc29tZXRoaW5nIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJmZWVsIGVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAidW5kZXJzdGFuZCBob3cgc29tZWJvZHkgZWxzZSBpcyBmZWVsaW5nIiwKICAgICAgICAgICBqb3kgPSAiZmVlbCBqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gImtub3cgd2hhdCdzIG5pY2UgYW5kIHdoYXQncyBtZWFuIiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJoYXZlIGEgcGVyc29uYWxpdHksIGxpa2Ugd2hlbiBzb21lb25lIGlzIHNoeSBhbmQgc29tZWJvZHkgZWxzZSBpcyBzaWxseSIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAiZmVlbCBwbGVhc3VyZSwgbGlrZSB3aGVuIHNvbWV0aGluZyBmZWVscyByZWFsbHkgZ29vZCIsCiAgICAgICAgICAgcHJpZGUgPSAiZmVlbCBwcm91ZCIpKSkgJT4lCiAgICBtdXRhdGUoc2hvcnQgPSBmYWN0b3IoCiAgICAgIHJlY29kZShpdGVtLAogICAgICAgICAgICAgaGFwcHkgPSAiaGFwcHkiLAogICAgICAgICAgICAgZGVwcmVzc2VkID0gInNhZCIsCiAgICAgICAgICAgZmVhciA9ICJzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJ0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIiwKICAgICAgICAgICBkZXB0aCA9ICJkZXB0aCIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gIm1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gInRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIiLAogICAgICAgICAgIGJlbGllZnMgPSAiYmVsaWVmcyIsCiAgICAgICAgICAgaHVuZ3J5ID0gImh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAidGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAicGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gInNpY2siLAogICAgICAgICAgIHNhZmUgPSAic2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUiLAogICAgICAgICAgIGd1aWx0ID0gImd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUiLAogICAgICAgICAgIGNob2ljZXMgPSAiY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAic2VsZi1jb250cm9sIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gInBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImdvYWxzIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYXdhcmUiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAic2VsZi1hd2FyZSIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJkZXNpcmVzIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gImVtcGF0aHkiLAogICAgICAgICAgIGpveSA9ICJqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gIm1vcmFsaXR5IiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJwZXJzb25hbGl0eSIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAicGxlYXN1cmUiLAogICAgICAgICAgIHByaWRlID0gInByaWRlIikpKQoKIyBtYWtlIGRhdGFmcmFtZSBmb3IgcGxvdHRpbmcKc2NhdHRlcl9wbG90dGluZyA8LSBsb2FkaW5ncyhlZmFfZDFfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICByZW5hbWUoQk9EWSA9IE1SMSwKICAgICAgICAgSEVBUlQgPSBNUjIsCiAgICAgICAgIE1JTkQgPSBNUjMpICU+JQogIGZ1bGxfam9pbih3b3JkaW5nX3MxKSAlPiUKICBtdXRhdGUoZG9taW5hbnQgPSBmYWN0b3IoCiAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCAiQk9EWSIsCiAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKSwKICAgIHNpemUgPSBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCBhYnMoQk9EWSksCiAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCBhYnMoSEVBUlQpLAogICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgYWJzKE1JTkQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAogICAgY29sb3IgPSBpZmVsc2UoZG9taW5hbnQgPT0gIkJPRFkiLCAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIkhFQVJUIiwgIiMzNzdFQjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiTUlORCIsICIjNERBRjRBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpCgojIHBsb3QhCmZpZ1MxIDwtIHBsb3RfbHkoc2NhdHRlcl9wbG90dGluZywgeCA9IH5IRUFSVCwgeSA9IH5CT0RZLCB6ID0gfk1JTkQsCiAgICAgICAgICAgICB0eXBlID0gInNjYXR0ZXIzZCIsCiAgICAgICAgICAgICBjb2xvciA9IH5kb21pbmFudCwgY29sb3JzID0gYygiIzM3N0VCOCIsICIjNERBRjRBIiwgIiNFNDFBMUMiKSwKICAgICAgICAgICAgIG1hcmtlciA9IGxpc3Qoc2l6ZSA9IDQpLAogICAgICAgICAgICAgdGV4dCA9IH5zaG9ydCwKICAgICAgICAgICAgIHRleHRmb250ID0gbGlzdChzaXplID0gMTUpLAogICAgICAgICAgICAgbW9kZSA9ICJ0ZXh0K21hcmtlcnMiLAogICAgICAgICAgICAgc2hvd2xlZ2VuZCA9IFRSVUUpCgpmaWdTMQpgYGAKCiMjIyBTdHVkeSAyICg3LTl5bykKCmBgYHtyIGZpZ3VyZSAzZCBzY2F0dGVyIHMyfQojIHNldCB1cCBsYWJlbHMgZm9yIHBsb3QgKHNob3J0ZW5lZCB2ZXJzaW9uIG9mIG1lbnRhbCBjYXBhY2l0eSBpdGVtcykKd29yZGluZ19zMiA8LSBsb2FkaW5ncyhlZmFfZDJfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBzZWxlY3QoaXRlbSkgJT4lCiAgbXV0YXRlKHdvcmRpbmcgPSBmYWN0b3IoCiAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICBoYXBweSA9ICJmZWVsIGhhcHB5IiwKICAgICAgICAgICBkZXByZXNzZWQgPSAiZmVlbCBzYWQiLAogICAgICAgICAgIGZlYXIgPSAiZmVlbCBzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImdldCBhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJmZWVsIGNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIHNvdW5kcyIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSB0aGluZ3MiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInNlbnNlIHRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwgdGhpbmdzIiwKICAgICAgICAgICBkZXB0aCA9ICJzZW5zZSB3aGV0aGVyIHNvbWV0aGluZyBpcyBjbG9zZSBieSBvciBmYXIgYXdheSIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gImRvIG1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gImhhdmUgdGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGluZ3MiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIHRoaW5ncyIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJoYXZlIGJlbGllZnMsIGxpa2Ugd2hlbiB5b3UgdGhpbmsgc29tZXRoaW5nIGlzIHRydWUiLAogICAgICAgICAgIGh1bmdyeSA9ICJnZXQgaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJmZWVsIHRpcmVkIiwKICAgICAgICAgICBwYWluID0gImZlZWwgcGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gImZlZWwgc2ljaywgbGlrZSB3aGVuIHlvdSBmZWVsIGxpa2UgeW91IG1pZ2h0IHRocm93IHVwIiwKICAgICAgICAgICBzYWZlID0gImZlZWwgc2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJmZWVsIGxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIHdpdGggc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZmVlbCBndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJnZXQgaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSB3aGF0IHRvIGRvIiwKICAgICAgICAgICBjaG9pY2VzID0gIm1ha2UgY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAiaGF2ZSBzZWxmLWNvbnRyb2wsIGxpa2Ugd2hlbiB5b3Ugc3RvcCB5b3Vyc2VsZiBmcm9tIGRvaW5nIHNvbWV0aGluZyB5b3Ugc2hvdWxkbid0IGRvIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gIm1ha2UgcGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiaGF2ZSBnb2FscywgbGlrZSB3aGVuIHlvdSdyZSB3b3JraW5nIGhhcmQgdG8gZG8gc29tZXRoaW5nIG9yIG1ha2Ugc29tZXRoaW5nIGhhcHBlbiIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImJlIGF3YXJlIG9mIHRoaW5ncyIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJiZSBhd2FyZSBvZiBpdHNlbGYiLAogICAgICAgICAgIGRlc2lyZXMgPSAiaGF2ZSBkZXNpcmVzLCBsaWtlIHdoZW4geW91IHJlYWxseSB3YW50IHNvbWV0aGluZyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZmVlbCBlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gInVuZGVyc3RhbmQgaG93IHNvbWVib2R5IGVsc2UgaXMgZmVlbGluZyIsCiAgICAgICAgICAgam95ID0gImZlZWwgam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJrbm93IHdoYXQncyBuaWNlIGFuZCB3aGF0J3MgbWVhbiIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAiaGF2ZSBhIHBlcnNvbmFsaXR5LCBsaWtlIHdoZW4gc29tZW9uZSBpcyBzaHkgYW5kIHNvbWVib2R5IGVsc2UgaXMgc2lsbHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gImZlZWwgcGxlYXN1cmUsIGxpa2Ugd2hlbiBzb21ldGhpbmcgZmVlbHMgcmVhbGx5IGdvb2QiLAogICAgICAgICAgIHByaWRlID0gImZlZWwgcHJvdWQiKSkpICU+JQogICAgbXV0YXRlKHNob3J0ID0gZmFjdG9yKAogICAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICAgIGhhcHB5ID0gImhhcHB5IiwKICAgICAgICAgICAgIGRlcHJlc3NlZCA9ICJzYWQiLAogICAgICAgICAgIGZlYXIgPSAic2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAidGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCIsCiAgICAgICAgICAgZGVwdGggPSAiZGVwdGgiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJ0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIiwKICAgICAgICAgICBiZWxpZWZzID0gImJlbGllZnMiLAogICAgICAgICAgIGh1bmdyeSA9ICJodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gInRpcmVkIiwKICAgICAgICAgICBwYWluID0gInBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJzaWNrIiwKICAgICAgICAgICBzYWZlID0gInNhZmUiLAogICAgICAgICAgIGxvdmUgPSAibG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIiwKICAgICAgICAgICBndWlsdCA9ICJndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIiwKICAgICAgICAgICBjaG9pY2VzID0gImNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gInNlbGYtY29udHJvbCIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJnb2FscyIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImF3YXJlIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gInNlbGYtYXdhcmUiLAogICAgICAgICAgIGRlc2lyZXMgPSAiZGVzaXJlcyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJlbXBhdGh5IiwKICAgICAgICAgICBqb3kgPSAiam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJtb3JhbGl0eSIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAicGVyc29uYWxpdHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gInBsZWFzdXJlIiwKICAgICAgICAgICBwcmlkZSA9ICJwcmlkZSIpKSkKCiMgbWFrZSBkYXRhZnJhbWUgZm9yIHBsb3R0aW5nCnNjYXR0ZXJfcGxvdHRpbmcgPC0gbG9hZGluZ3MoZWZhX2QyX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgcmVuYW1lKEJPRFkgPSBNUjEsCiAgICAgICAgIEhFQVJUID0gTVIyLAogICAgICAgICBNSU5EID0gTVIzKSAlPiUKICBmdWxsX2pvaW4od29yZGluZ19zMikgJT4lCiAgbXV0YXRlKGRvbWluYW50ID0gZmFjdG9yKAogICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgIkJPRFkiLAogICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSksCiAgICBzaXplID0gaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgYWJzKEJPRFkpLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgYWJzKEhFQVJUKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksIGFicyhNSU5EKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgIGNvbG9yID0gaWZlbHNlKGRvbWluYW50ID09ICJCT0RZIiwgIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJIRUFSVCIsICIjNERBRjRBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIk1JTkQiLCAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKQoKIyBwbG90IQpmaWdTMiA8LSBwbG90X2x5KHNjYXR0ZXJfcGxvdHRpbmcsIHggPSB+SEVBUlQsIHkgPSB+Qk9EWSwgeiA9IH5NSU5ELAogICAgICAgICAgICAgdHlwZSA9ICJzY2F0dGVyM2QiLAogICAgICAgICAgICAgY29sb3IgPSB+ZG9taW5hbnQsIGNvbG9ycyA9IGMoIiMzNzdFQjgiLCAiIzREQUY0QSIsICIjRTQxQTFDIiksCiAgICAgICAgICAgICBtYXJrZXIgPSBsaXN0KHNpemUgPSA0KSwKICAgICAgICAgICAgIHRleHQgPSB+c2hvcnQsCiAgICAgICAgICAgICB0ZXh0Zm9udCA9IGxpc3Qoc2l6ZSA9IDE1KSwKICAgICAgICAgICAgIG1vZGUgPSAidGV4dCttYXJrZXJzIiwKICAgICAgICAgICAgIHNob3dsZWdlbmQgPSBUUlVFKQoKZmlnUzIKYGBgCgojIyMgU3R1ZHkgMyAoNy05eW8pCgpgYGB7ciBmaWd1cmUgM2Qgc2NhdHRlciBzM30KIyBzZXQgdXAgbGFiZWxzIGZvciBwbG90IChzaG9ydGVuZWQgdmVyc2lvbiBvZiBtZW50YWwgY2FwYWNpdHkgaXRlbXMpCndvcmRpbmdfczMgPC0gbG9hZGluZ3MoZWZhX2QzX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgc2VsZWN0KGl0ZW0pICU+JQogIG11dGF0ZSh3b3JkaW5nID0gZmFjdG9yKAogICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgaGFwcHkgPSAiZmVlbCBoYXBweSIsCiAgICAgICAgICAgZGVwcmVzc2VkID0gImZlZWwgc2FkIiwKICAgICAgICAgICBmZWFyID0gImZlZWwgc2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJnZXQgYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiZmVlbCBjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciBzb3VuZHMiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUgdGhpbmdzIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJzZW5zZSB0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIHRoaW5ncyIsCiAgICAgICAgICAgIyBkZXB0aCA9ICJzZW5zZSB3aGV0aGVyIHNvbWV0aGluZyBpcyBjbG9zZSBieSBvciBmYXIgYXdheSIsCiAgICAgICAgICAgZGVwdGggPSAic2Vuc2UuLi4gZmFyIGF3YXkiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJkbyBtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJoYXZlIHRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCBob3cgdG8gZG8gdGhpbmdzIiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciB0aGluZ3MiLAogICAgICAgICAgICMgYmVsaWVmcyA9ICJoYXZlIGJlbGllZnMsIGxpa2Ugd2hlbiB5b3UgdGhpbmsgc29tZXRoaW5nIGlzIHRydWUiLAogICAgICAgICAgIGJlbGllZnMgPSAiaGF2ZSBiZWxpZWZzLi4uIiwKICAgICAgICAgICBodW5ncnkgPSAiZ2V0IGh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAiZmVlbCB0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJmZWVsIHBhaW4iLAogICAgICAgICAgICMgbmF1c2VhdGVkID0gImZlZWwgc2ljaywgbGlrZSB3aGVuIHlvdSBmZWVsIGxpa2UgeW91IG1pZ2h0IHRocm93IHVwIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAiZmVlbCBzaWNrLi4uIiwKICAgICAgICAgICBzYWZlID0gImZlZWwgc2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJmZWVsIGxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIHdpdGggc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZmVlbCBndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJnZXQgaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSB3aGF0IHRvIGRvIiwKICAgICAgICAgICBjaG9pY2VzID0gIm1ha2UgY2hvaWNlcyIsCiAgICAgICAgICAgIyBzZWxmX3Jlc3RyYWludCA9ICJoYXZlIHNlbGYtY29udHJvbCwgbGlrZSB3aGVuIHlvdSBzdG9wIHlvdXJzZWxmIGZyb20gZG9pbmcgc29tZXRoaW5nIHlvdSBzaG91bGRuJ3QgZG8iLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gImhhdmUgc2VsZi1jb250cm9sLi4uIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gIm1ha2UgcGxhbnMiLAogICAgICAgICAgICMgZ29hbCA9ICJoYXZlIGdvYWxzLCBsaWtlIHdoZW4geW91J3JlIHdvcmtpbmcgaGFyZCB0byBkbyBzb21ldGhpbmcgb3IgbWFrZSBzb21ldGhpbmcgaGFwcGVuIiwKICAgICAgICAgICBnb2FsID0gImhhdmUgZ29hbHMuLi4iLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJiZSBhd2FyZSBvZiB0aGluZ3MiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAiYmUgYXdhcmUgb2YgaXRzZWxmIiwKICAgICAgICAgICAjIGRlc2lyZXMgPSAiaGF2ZSBkZXNpcmVzLCBsaWtlIHdoZW4geW91IHJlYWxseSB3YW50IHNvbWV0aGluZyIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJoYXZlIGRlc2lyZXMuLi4iLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImZlZWwgZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJ1bmRlcnN0YW5kIGhvdyBzb21lYm9keSBlbHNlIGlzIGZlZWxpbmciLAogICAgICAgICAgIGpveSA9ICJmZWVsIGpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAia25vdyB3aGF0J3MgbmljZSBhbmQgd2hhdCdzIG1lYW4iLAogICAgICAgICAgICMgcGVyc29uYWxpdHkgPSAiaGF2ZSBhIHBlcnNvbmFsaXR5LCBsaWtlIHdoZW4gc29tZW9uZSBpcyBzaHkgYW5kIHNvbWVib2R5IGVsc2UgaXMgc2lsbHkiLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gImhhdmUgYSBwZXJzb25hbGl0eS4uLiIsCiAgICAgICAgICAgIyBwbGVhc3VyZSA9ICJmZWVsIHBsZWFzdXJlLCBsaWtlIHdoZW4gc29tZXRoaW5nIGZlZWxzIHJlYWxseSBnb29kIiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJmZWVsIHBsZWFzdXJlLi4uIiwKICAgICAgICAgICBwcmlkZSA9ICJmZWVsIHByb3VkIikpKSAlPiUKICAgIG11dGF0ZShzaG9ydCA9IGZhY3RvcigKICAgICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgICBoYXBweSA9ICJoYXBweSIsCiAgICAgICAgICAgICBkZXByZXNzZWQgPSAic2FkIiwKICAgICAgICAgICBmZWFyID0gInNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwiLAogICAgICAgICAgIGRlcHRoID0gImRlcHRoIiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAibWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAidGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJiZWxpZWZzIiwKICAgICAgICAgICBodW5ncnkgPSAiaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJ0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAic2ljayIsCiAgICAgICAgICAgc2FmZSA9ICJzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJzZWxmLWNvbnRyb2wiLAogICAgICAgICAgIGludGVudGlvbnMgPSAicGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiZ29hbHMiLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJhd2FyZSIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJzZWxmLWF3YXJlIiwKICAgICAgICAgICBkZXNpcmVzID0gImRlc2lyZXMiLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAiZW1wYXRoeSIsCiAgICAgICAgICAgam95ID0gImpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAibW9yYWxpdHkiLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gInBlcnNvbmFsaXR5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJwbGVhc3VyZSIsCiAgICAgICAgICAgcHJpZGUgPSAicHJpZGUiKSkpCgojIG1ha2UgZGF0YWZyYW1lIGZvciBwbG90dGluZwpzY2F0dGVyX3Bsb3R0aW5nIDwtIGxvYWRpbmdzKGVmYV9kM19hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHJlbmFtZShCT0RZID0gTVIxLAogICAgICAgICBIRUFSVCA9IE1SMiwKICAgICAgICAgTUlORCA9IE1SMykgJT4lCiAgZnVsbF9qb2luKHdvcmRpbmdfczMpICU+JQogIG11dGF0ZShkb21pbmFudCA9IGZhY3RvcigKICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksICJCT0RZIiwKICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpLAogICAgc2l6ZSA9IGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksIGFicyhCT0RZKSwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksIGFicyhIRUFSVCksCiAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCBhYnMoTUlORCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICBjb2xvciA9IGlmZWxzZShkb21pbmFudCA9PSAiQk9EWSIsICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiSEVBUlQiLCAiIzREQUY0QSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJNSU5EIiwgIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkKCiMgcGxvdCEKZmlnczMgPC0gcGxvdF9seShzY2F0dGVyX3Bsb3R0aW5nLCB4ID0gfkhFQVJULCB5ID0gfkJPRFksIHogPSB+TUlORCwKICAgICAgICAgICAgIHR5cGUgPSAic2NhdHRlcjNkIiwKICAgICAgICAgICAgIGNvbG9yID0gfmRvbWluYW50LCBjb2xvcnMgPSBjKCIjMzc3RUI4IiwgIiM0REFGNEEiLCAiI0U0MUExQyIpLAogICAgICAgICAgICAgbWFya2VyID0gbGlzdChzaXplID0gNCksCiAgICAgICAgICAgICB0ZXh0ID0gfnNob3J0LAogICAgICAgICAgICAgdGV4dGZvbnQgPSBsaXN0KHNpemUgPSAxNSksCiAgICAgICAgICAgICBtb2RlID0gInRleHQrbWFya2VycyIsCiAgICAgICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkKCmZpZ3MzCmBgYAoKIyMjIFN0dWR5IDQgKDQtNnlvKQoKYGBge3IgZmlndXJlIDNkIHNjYXR0ZXIgczR9CiMgc2V0IHVwIGxhYmVscyBmb3IgcGxvdCAoc2hvcnRlbmVkIHZlcnNpb24gb2YgbWVudGFsIGNhcGFjaXR5IGl0ZW1zKQp3b3JkaW5nX3M0IDwtIGxvYWRpbmdzKGVmYV9kNF9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHNlbGVjdChpdGVtKSAlPiUKICBtdXRhdGUod29yZGluZyA9IGZhY3RvcigKICAgIHJlY29kZShpdGVtLAogICAgICAgICAgIGhhcHB5ID0gImZlZWwgaGFwcHkiLAogICAgICAgICAgIGRlcHJlc3NlZCA9ICJmZWVsIHNhZCIsCiAgICAgICAgICAgZmVhciA9ICJmZWVsIHNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiZ2V0IGFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImZlZWwgY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIgc291bmRzIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIHRoaW5ncyIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAic2Vuc2UgdGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCB0aGluZ3MiLAogICAgICAgICAgICMgZGVwdGggPSAic2Vuc2Ugd2hldGhlciBzb21ldGhpbmcgaXMgY2xvc2UgYnkgb3IgZmFyIGF3YXkiLAogICAgICAgICAgIGRlcHRoID0gInNlbnNlLi4uIGZhciBhd2F5IiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAiZG8gbWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAiaGF2ZSB0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQgaG93IHRvIGRvIHRoaW5ncyIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIgdGhpbmdzIiwKICAgICAgICAgICAjIGJlbGllZnMgPSAiaGF2ZSBiZWxpZWZzLCBsaWtlIHdoZW4geW91IHRoaW5rIHNvbWV0aGluZyBpcyB0cnVlIiwKICAgICAgICAgICBiZWxpZWZzID0gImhhdmUgYmVsaWVmcy4uLiIsCiAgICAgICAgICAgaHVuZ3J5ID0gImdldCBodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gImZlZWwgdGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAiZmVlbCBwYWluIiwKICAgICAgICAgICAjIG5hdXNlYXRlZCA9ICJmZWVsIHNpY2ssIGxpa2Ugd2hlbiB5b3UgZmVlbCBsaWtlIHlvdSBtaWdodCB0aHJvdyB1cCIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gImZlZWwgc2ljay4uLiIsCiAgICAgICAgICAgc2FmZSA9ICJmZWVsIHNhZmUiLAogICAgICAgICAgIGxvdmUgPSAiZmVlbCBsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUgc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSB3aXRoIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGd1aWx0ID0gImZlZWwgZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiZ2V0IGh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUgd2hhdCB0byBkbyIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJtYWtlIGNob2ljZXMiLAogICAgICAgICAgICMgc2VsZl9yZXN0cmFpbnQgPSAiaGF2ZSBzZWxmLWNvbnRyb2wsIGxpa2Ugd2hlbiB5b3Ugc3RvcCB5b3Vyc2VsZiBmcm9tIGRvaW5nIHNvbWV0aGluZyB5b3Ugc2hvdWxkbid0IGRvIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJoYXZlIHNlbGYtY29udHJvbC4uLiIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJtYWtlIHBsYW5zIiwKICAgICAgICAgICAjIGdvYWwgPSAiaGF2ZSBnb2FscywgbGlrZSB3aGVuIHlvdSdyZSB3b3JraW5nIGhhcmQgdG8gZG8gc29tZXRoaW5nIG9yIG1ha2Ugc29tZXRoaW5nIGhhcHBlbiIsCiAgICAgICAgICAgZ29hbCA9ICJoYXZlIGdvYWxzLi4uIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYmUgYXdhcmUgb2YgdGhpbmdzIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gImJlIGF3YXJlIG9mIGl0c2VsZiIsCiAgICAgICAgICAgIyBkZXNpcmVzID0gImhhdmUgZGVzaXJlcywgbGlrZSB3aGVuIHlvdSByZWFsbHkgd2FudCBzb21ldGhpbmciLAogICAgICAgICAgIGRlc2lyZXMgPSAiaGF2ZSBkZXNpcmVzLi4uIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJmZWVsIGVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAidW5kZXJzdGFuZCBob3cgc29tZWJvZHkgZWxzZSBpcyBmZWVsaW5nIiwKICAgICAgICAgICBqb3kgPSAiZmVlbCBqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gImtub3cgd2hhdCdzIG5pY2UgYW5kIHdoYXQncyBtZWFuIiwKICAgICAgICAgICAjIHBlcnNvbmFsaXR5ID0gImhhdmUgYSBwZXJzb25hbGl0eSwgbGlrZSB3aGVuIHNvbWVvbmUgaXMgc2h5IGFuZCBzb21lYm9keSBlbHNlIGlzIHNpbGx5IiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJoYXZlIGEgcGVyc29uYWxpdHkuLi4iLAogICAgICAgICAgICMgcGxlYXN1cmUgPSAiZmVlbCBwbGVhc3VyZSwgbGlrZSB3aGVuIHNvbWV0aGluZyBmZWVscyByZWFsbHkgZ29vZCIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAiZmVlbCBwbGVhc3VyZS4uLiIsCiAgICAgICAgICAgcHJpZGUgPSAiZmVlbCBwcm91ZCIpKSkgJT4lCiAgICBtdXRhdGUoc2hvcnQgPSBmYWN0b3IoCiAgICAgIHJlY29kZShpdGVtLAogICAgICAgICAgICAgaGFwcHkgPSAiaGFwcHkiLAogICAgICAgICAgICAgZGVwcmVzc2VkID0gInNhZCIsCiAgICAgICAgICAgZmVhciA9ICJzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJ0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIiwKICAgICAgICAgICBkZXB0aCA9ICJkZXB0aCIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gIm1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gInRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIiLAogICAgICAgICAgIGJlbGllZnMgPSAiYmVsaWVmcyIsCiAgICAgICAgICAgaHVuZ3J5ID0gImh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAidGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAicGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gInNpY2siLAogICAgICAgICAgIHNhZmUgPSAic2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUiLAogICAgICAgICAgIGd1aWx0ID0gImd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUiLAogICAgICAgICAgIGNob2ljZXMgPSAiY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAic2VsZi1jb250cm9sIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gInBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImdvYWxzIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYXdhcmUiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAic2VsZi1hd2FyZSIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJkZXNpcmVzIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gImVtcGF0aHkiLAogICAgICAgICAgIGpveSA9ICJqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gIm1vcmFsaXR5IiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJwZXJzb25hbGl0eSIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAicGxlYXN1cmUiLAogICAgICAgICAgIHByaWRlID0gInByaWRlIikpKQoKIyAjIG1ha2UgZGF0YWZyYW1lIGZvciBwbG90dGluZwojIHNjYXR0ZXJfcGxvdHRpbmcgPC0gbG9hZGluZ3MoZWZhX2Q0X2FsbF9yb3RhdGVkTilbXSAlPiUKIyAgIGRhdGEuZnJhbWUoKSAlPiUKIyAgIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQojICAgcmVuYW1lKEJPRFkgPSBNUjEsCiMgICAgICAgICAgSEVBUlQgPSBNUjIsCiMgICAgICAgICAgTUlORCA9IE1SMykgJT4lCiMgICBmdWxsX2pvaW4od29yZGluZ19zNCkgJT4lCiMgICBtdXRhdGUoZG9taW5hbnQgPSBmYWN0b3IoCiMgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksICJCT0RZIiwKIyAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCAiSEVBUlQiLAojICAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksICJNSU5EIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpLAojICAgICBzaXplID0gaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgYWJzKEJPRFkpLAojICAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCBhYnMoSEVBUlQpLAojICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCBhYnMoTUlORCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKIyAgICAgY29sb3IgPSBpZmVsc2UoZG9taW5hbnQgPT0gIkJPRFkiLCAiI0U0MUExQyIsCiMgICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiSEVBUlQiLCAiIzREQUY0QSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIk1JTkQiLCAiI0U0MUExQyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpCiMgCiMgIyBwbG90IQojIGZpZ3M0IDwtIHBsb3RfbHkoc2NhdHRlcl9wbG90dGluZywgeCA9IH5IRUFSVCwgeSA9IH5CT0RZLCB6ID0gfk1JTkQsCiMgICAgICAgICAgICAgIHR5cGUgPSAic2NhdHRlcjNkIiwKIyAgICAgICAgICAgICAgY29sb3IgPSB+ZG9taW5hbnQsIGNvbG9ycyA9IGMoIiMzNzdFQjgiLCAiIzREQUY0QSIsICIjRTQxQTFDIiksCiMgICAgICAgICAgICAgIG1hcmtlciA9IGxpc3Qoc2l6ZSA9IDQpLAojICAgICAgICAgICAgICB0ZXh0ID0gfnNob3J0LAojICAgICAgICAgICAgICB0ZXh0Zm9udCA9IGxpc3Qoc2l6ZSA9IDE1KSwKIyAgICAgICAgICAgICAgbW9kZSA9ICJ0ZXh0K21hcmtlcnMiLAojICAgICAgICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkKIyAKIyBmaWdzNApgYGAKCiMjIEhlYXRtYXBzCgoqTk9URTogc2V0IHRvIDMgZmFjdG9ycyBtYW51YWxseSwgZm9yIG5vdy4qCgojIyMgU3R1ZHkgMSAoYWR1bHRzKQoKYGBge3IgZmlndXJlIGhlYXRtYXAgczEsIGZpZy53aWR0aCA9IDcsIGZpZy5oZWlnaHQgPSA3fQpmYWN0b3JzX3MxIDwtIGZhLnNvcnQoZmEoZDFfYWxsLCBuZmFjdG9ycyA9IDMsIGNvciA9IGNob3NlbkNvclR5cGUsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUpJGxvYWRpbmdzW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBmdWxsX2pvaW4od29yZGluZ19zMSkgJT4lCiAgc2VsZWN0KHdvcmRpbmcsIE1SMSwgTVIyLCBNUjMpICU+JQogIHJlbmFtZShjYXBhY2l0eSA9IHdvcmRpbmcsIEZhY3RvcjEgPSBNUjEsIEZhY3RvcjIgPSBNUjIsIEZhY3RvcjMgPSBNUjMpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkKCmZhY3RvcnNfczFfbG9uZyA8LSBmYWN0b3JzX3MxICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYxIiwgIkYzIiwgIkYyIikpKSAlPiUKICAjIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpLAogICMgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJGMiIsICJGMSIsICJGMyIpKSkgJT4lCiAgYXJyYW5nZShvcmRlciwgZmFjdG9yKQoKZmFjdG9yc19zMV9ibGFuazEgPC0gZmFjdG9yc19zMV9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczFfbG9uZyRsb2FkaW5nKSkpCiMgZmFjdG9yc19zMV9ibGFuazIgPC0gZmFjdG9yc19zMV9sb25nICU+JQojICAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yID09ICJGMSIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MxX2xvbmckbG9hZGluZykqMi8zKSkpCmZhY3RvcnNfczFfYmxhbmsyIDwtIGZhY3RvcnNfczFfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYyIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczFfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zMV9ibGFuazMgPC0gZmFjdG9yc19zMV9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciAhPSAiRjMiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMV9sb25nJGxvYWRpbmcpKjEvMykpKQoKIyBnZ3Bsb3QoZmFjdG9yc19zMV9ibGFuazEsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3MxX2JsYW5rMiwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKIyAKIyBnZ3Bsb3QoZmFjdG9yc19zMV9ibGFuazMsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCgpnZ3Bsb3QoZmFjdG9yc19zMV9sb25nLCBhZXMoeCA9IGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSksIHNpemUgPSA2KSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwogIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMC41MSwgeG1heCA9IDEuNDksIHltaW4gPSAxNC41NSwgeW1heCA9IDIwLjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAxLjUxLCB4bWF4ID0gMi40OSwgeW1pbiA9IDYuNTUsIHltYXggPSAxNC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMi41MSwgeG1heCA9IDMuNDksIHltaW4gPSAwLjU1LCB5bWF4ID0gNi40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgdGhlbWVfYncoKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCmBgYAoKIyMjIFN0dWR5IDIgKDctOXkpCgpgYGB7ciBmaWd1cmUgaGVhdG1hcCBzMiwgZmlnLndpZHRoID0gNywgZmlnLmhlaWdodCA9IDd9CmZhY3RvcnNfczIgPC0gZmEuc29ydChmYShkMl9hbGwsIG5mYWN0b3JzID0gMywgY29yID0gY2hvc2VuQ29yVHlwZSwgcm90YXRlID0gY2hvc2VuUm90VHlwZSkkbG9hZGluZ3NbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIGZ1bGxfam9pbih3b3JkaW5nX3MyKSAlPiUKICBzZWxlY3Qod29yZGluZywgTVIxLCBNUjIsIE1SMykgJT4lCiAgcmVuYW1lKGNhcGFjaXR5ID0gd29yZGluZywgRmFjdG9yMSA9IE1SMSwgRmFjdG9yMiA9IE1SMiwgRmFjdG9yMyA9IE1SMykgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlciIpICU+JQogIG11dGF0ZShvcmRlciA9IGFzLm51bWVyaWMob3JkZXIpKQoKZmFjdG9yc19zMl9sb25nIDwtIGZhY3RvcnNfczIgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5LCAtb3JkZXIpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjEiLCAiRjMiLCAiRjIiKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYyIiwgIkYxIiwgIkYzIikpKSAlPiUKICBhcnJhbmdlKG9yZGVyLCBmYWN0b3IpCgpmYWN0b3JzX3MyX2JsYW5rMSA8LSBmYWN0b3JzX3MyX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMl9sb25nJGxvYWRpbmcpKSkKZmFjdG9yc19zMl9ibGFuazIgPC0gZmFjdG9yc19zMl9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjEiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMl9sb25nJGxvYWRpbmcpKjIvMykpKQojIGZhY3RvcnNfczJfYmxhbmsyIDwtIGZhY3RvcnNfczJfbG9uZyAlPiUKIyAgIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjIiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMl9sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3MyX2JsYW5rMyA8LSBmYWN0b3JzX3MyX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yICE9ICJGMyIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MyX2xvbmckbG9hZGluZykqMS8zKSkpCgojIGdncGxvdChmYWN0b3JzX3MyX2JsYW5rMSwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczJfYmxhbmsyLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3MyX2JsYW5rMywgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKCmdncGxvdChmYWN0b3JzX3MyX2xvbmcsIGFlcyh4ID0gZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDYpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAwLjUxLCB4bWF4ID0gMS40OSwgeW1pbiA9IDE0LjU1LCB5bWF4ID0gMjAuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDEuNTEsIHhtYXggPSAyLjQ5LCB5bWluID0gNi41NSwgeW1heCA9IDE0LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAyLjUxLCB4bWF4ID0gMy40OSwgeW1pbiA9IDAuNTUsIHltYXggPSA2LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyB0aGVtZV9idygpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKYGBgCgojIyMgU3R1ZHkgMyAoNy05eSkKCmBgYHtyIGZpZ3VyZSBoZWF0bWFwIHMzLCBmaWcud2lkdGggPSA0LCBmaWcuaGVpZ2h0ID0gN30KZmFjdG9yc19zMyA8LSBmYS5zb3J0KGZhKGQzX2FsbCwgbmZhY3RvcnMgPSAzLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlKSRsb2FkaW5nc1tdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgbGVmdF9qb2luKGNoYXJfcGxvdHRpbmdfd29yZGluZ3MsIGJ5ID0gYygiaXRlbSIgPSAiY2FwYWNpdHkiKSkgJT4lCiAgc2VsZWN0KHdvcmRpbmcsIE1SMSwgTVIyLCBNUjMpICU+JQogIHJlbmFtZShjYXBhY2l0eSA9IHdvcmRpbmcsIEZhY3RvcjEgPSBNUjEsIEZhY3RvcjIgPSBNUjIsIEZhY3RvcjMgPSBNUjMpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkKCmZhY3RvcnNfczNfbG9uZyA8LSBmYWN0b3JzX3MzICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjEiLCAiRjMiLCAiRjIiKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYyIiwgIkYxIiwgIkYzIikpKSAlPiUKICBhcnJhbmdlKG9yZGVyLCBmYWN0b3IpCgpmYWN0b3JzX3MzX2JsYW5rMSA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zM19sb25nJGxvYWRpbmcpKSkKIyBmYWN0b3JzX3MzX2JsYW5rMiA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiMgICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYxIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczNfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zM19ibGFuazIgPC0gZmFjdG9yc19zM19sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjIiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zM19sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3MzX2JsYW5rMyA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yICE9ICJGMyIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MzX2xvbmckbG9hZGluZykqMS8zKSkpCgojIGdncGxvdChmYWN0b3JzX3MzX2JsYW5rMSwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczNfYmxhbmsyLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3MzX2JsYW5rMywgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKCmdncGxvdChmYWN0b3JzX3MzX2xvbmcsIGFlcyh4ID0gZmFjdG9yKGZhY3RvciwgbGFiZWxzID0gYygiQm9keSIsICJNaW5kIiwgIkhlYXJ0IikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDYpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAwLjUxLCB4bWF4ID0gMS40OSwgeW1pbiA9IDE0LjU1LCB5bWF4ID0gMjAuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDEuNTEsIHhtYXggPSAyLjQ5LCB5bWluID0gNi41NSwgeW1heCA9IDE0LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAyLjUxLCB4bWF4ID0gMy40OSwgeW1pbiA9IDAuNTUsIHltYXggPSA2LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyB0aGVtZV9idygpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnMoeCA9ICJTdHVkeSAyICg3LTl5KSIpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCmBgYAoKIyMjIFN0dWR5IDQgKDQtNnkpCgpgYGB7ciBmaWd1cmUgaGVhdG1hcCBzNCwgZmlnLndpZHRoID0gNCwgZmlnLmhlaWdodCA9IDd9CmZhY3RvcnNfczQgPC0gZmEuc29ydChmYShkNF9hbGwsIG5mYWN0b3JzID0gbmZhY3RvcnNfZDRfYWxsLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlKSRsb2FkaW5nc1tdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgbGVmdF9qb2luKGNoYXJfcGxvdHRpbmdfd29yZGluZ3MsIGJ5ID0gYygiaXRlbSIgPSAiY2FwYWNpdHkiKSkgJT4lCiAgc2VsZWN0KHdvcmRpbmcsIHN0YXJ0c193aXRoKCJNUiIpKSAlPiUKICByZW5hbWUoY2FwYWNpdHkgPSB3b3JkaW5nLCBGYWN0b3IxID0gTVIxLCBGYWN0b3IyID0gTVIyKSAlPiUgIywgRmFjdG9yMyA9IE1SMykgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlciIpICU+JQogIG11dGF0ZShvcmRlciA9IGFzLm51bWVyaWMob3JkZXIpKQoKZmFjdG9yc19zNF9sb25nIDwtIGZhY3RvcnNfczQgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5LCAtb3JkZXIpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjEiLCAiRjMiLCAiRjIiKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYyIiwgIkYxIiwgIkYzIikpKSAlPiUKICBhcnJhbmdlKG9yZGVyLCBmYWN0b3IpCgpmYWN0b3JzX3M0X2JsYW5rMSA8LSBmYWN0b3JzX3M0X2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zNF9sb25nJGxvYWRpbmcpKSkKIyBmYWN0b3JzX3M0X2JsYW5rMiA8LSBmYWN0b3JzX3M0X2xvbmcgJT4lCiMgICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYxIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczRfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zNF9ibGFuazIgPC0gZmFjdG9yc19zNF9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjIiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zNF9sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3M0X2JsYW5rMyA8LSBmYWN0b3JzX3M0X2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yICE9ICJGMyIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3M0X2xvbmckbG9hZGluZykqMS8zKSkpCgojIGdncGxvdChmYWN0b3JzX3M0X2JsYW5rMSwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczRfYmxhbmsyLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3M0X2JsYW5rMywgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKCmdncGxvdChmYWN0b3JzX3M0X2xvbmcsIGFlcyh4ID0gZmFjdG9yKGZhY3RvciwgbGFiZWxzID0gYygiQm9keS1IZWFydCIsICJNaW5kIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDYpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAwLjUxLCB4bWF4ID0gMS40OSwgeW1pbiA9IDE0LjU1LCB5bWF4ID0gMjAuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDEuNTEsIHhtYXggPSAyLjQ5LCB5bWluID0gNi41NSwgeW1heCA9IDE0LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAyLjUxLCB4bWF4ID0gMy40OSwgeW1pbiA9IDAuNTUsIHltYXggPSA2LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyB0aGVtZV9idygpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnMoeCA9ICJTdHVkeSAxICg0LTZ5KSIpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCmBgYAoKCiMjIE1lYW4gcmF0aW5ncwoKIyMjIFN0dWRpZXMgMS0yCgpNZWFuIHJhdGluZ3Mgb2YgNDAgbWVudGFsIGNhcGFjaXRpZXMgZm9yIHRoZSAyIGVudGl0aWVzIGluY2x1ZGVkIGluIFN0dWRpZXMgMS0yLiBQYXJ0aWNpcGFudHMgcmVzcG9uZGVkIG9uIGEgMy1wb2ludCBzY2FsZSAoMCA9ICJubyIsIDAuNSA9ICJraW5kYSIsIDEgPSAieWVzIikuIEVycm9yIGJhcnMgYXJlIG5vbnBhcmFtZXRyaWMgYm9vdHN0cmFwcGVkIDk1JSBjb25maWRlbmNlIGludGVydmFscy4gTWVudGFsIGNhcGFjaXRpZXMgYXJlIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZWlyIGRvbWluYW50IGZhY3RvciBsb2FkaW5nIGluIFN0dWR5IDEgKGFkdWx0cykuCgpgYGB7ciBmaWd1cmUgbWVhbiByYXRpbmdzIHMxLXMyLCBmaWcud2lkdGggPSAzLCBmaWcuaGVpZ2h0ID0gM30KIyBtYWtlIGRhdGFmcmFtZQpzMTJfcGxvdHRpbmcgPC0gY2hhcl9wbG90dGluZyAlPiUKICBmaWx0ZXIoc3R1ZHkgJWluJSBjKCJzdHVkeSAxIiwgInN0dWR5IDIiKSkgJT4lCiAgZGlzdGluY3QoKQoKIyBwbG90ISAob3JkZXJlZCBieSBzdHVkeSAzIGZhY3RvciBsb2FkaW5ncykKczEyIDwtIGdncGxvdChzMTJfcGxvdHRpbmcsCiAgICAgICAgICAgICAgIGFlcyh5ID0gTWVhbiwgeCA9IHJlb3JkZXIod29yZGluZywgZGVzYyhzMV9vcmRlcikpLAogICAgICAgICAgICAgICAgICAgY29sb3VyID0gZmFjdG9yKHMxX2NvbG9yKSwgc2hhcGUgPSBzdHVkeSkpICsKICBnZW9tX3BvaW50KHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC42KSwgc2l6ZSA9IDIpICsKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gTG93ZXIsIHltYXggPSBVcHBlciksIHdpZHRoID0gMC40LAogICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNikpICsKICBmYWNldF93cmFwKH4gY2hhcmFjdGVyKSArCiAgdGhlbWVfYncoKSArCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiXG5NZWFuIHJhdGluZyIsCiAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoMCwgMSksCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IGMoMCwgMC41LCAxKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiMFxuKG5vKSIsICIwLjVcbihraW5kYSkiLCAiMVxuKHllcykiKSkgKwogIHNjYWxlX3NoYXBlX2Rpc2NyZXRlKG5hbWUgPSAiU3R1ZHk6IiwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTdHVkeSAxOiBhZHVsdHMiLCAiU3R1ZHkgMjogNy05eSIpKSArCiAgIyBzY2FsZV9jb2xvdXJfYnJld2VyKG5hbWUgPSAiRmFjdG9yOiIsCiAgIyAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAicXVhbCIsIHBhbGV0dGUgPSA2LAogICMgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IEZBTFNFKSArCiAgc2NhbGVfY29sb3VyX21hbnVhbChuYW1lID0gIkZhY3RvcjoiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYygiI0U0MUExQyIsICIjNERBRjRBIiwgIiMzNzdFQjgiKSwKICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkJPRFkiLCAiTUlORCIsICJIRUFSVCIpKSArCiAgY29vcmRfZmxpcCgpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5KSwKICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IHBhbGV0dGVfczEpLAogICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpLAogICAgICBsZWdlbmQucG9zaXRpb24gPSAicmlnaHQiKQoKczEyCmBgYAoKIyMjIFN0dWRpZXMgMy00CgpNZWFuIHJhdGluZ3Mgb2YgMjAgbWVudGFsIGNhcGFjaXRpZXMgZm9yIHRoZSA5IGVudGl0aWVzIGluY2x1ZGVkIGluIFN0dWRpZXMgMy00LiBQYXJ0aWNpcGFudHMgcmVzcG9uZGVkIG9uIGEgMy1wb2ludCBzY2FsZSAoMCA9ICJubyIsIDAuNSA9ICJraW5kYSIsIDEgPSAieWVzIikuIEVycm9yIGJhcnMgYXJlIG5vbnBhcmFtZXRyaWMgYm9vdHN0cmFwcGVkIDk1JSBjb25maWRlbmNlIGludGVydmFscy4gTWVudGFsIGNhcGFjaXRpZXMgYXJlIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZWlyIGRvbWluYW50IGZhY3RvciBsb2FkaW5nIGluIFN0dWR5IDMgKDctOXkpLgoKYGBge3IgZmlndXJlIG1lYW4gcmF0aW5ncyBzMy1zNCwgZmlnLndpZHRoID0gNSwgZmlnLmhlaWdodCA9IDN9CiMgbWFrZSBkYXRhZnJhbWUKczM0X3Bsb3R0aW5nIDwtIGNoYXJfcGxvdHRpbmcgJT4lCiAgZmlsdGVyKHN0dWR5ICVpbiUgYygic3R1ZHkgMyIsICJzdHVkeSA0IiksCiAgICAgICAgICFpcy5uYShzM19vcmRlciksICFpcy5uYShjaGFyYWN0ZXIpLCAhaXMubmEoY2FwYWNpdHkpKSAlPiUKICBkaXN0aW5jdCgpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwgInJvYm90IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgImVsZXBoYW50IikpKQoKIyBwbG90ISAob3JkZXJlZCBieSBzdHVkeSAzIGZhY3RvciBsb2FkaW5ncykKczM0IDwtIGdncGxvdChzMzRfcGxvdHRpbmcsCiAgICAgICAgICAgICAgIGFlcyh5ID0gTWVhbiwgeCA9IHJlb3JkZXIod29yZGluZywgZGVzYyhzM19vcmRlcikpLCAKICAgICAgICAgICAgICAgICAgICMgY29sb3VyID0gc3R1ZHksCiAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBzM19jb2xvciwKICAgICAgICAgICAgICAgICAgIHNoYXBlID0gc3R1ZHkpKSArCiAgZ2VvbV9wb2ludChzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNiksIHNpemUgPSAyKSArCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IExvd2VyLCB5bWF4ID0gVXBwZXIpLCB3aWR0aCA9IDAuNCwKICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpKSArCiAgZmFjZXRfd3JhcCh+IGNoYXJhY3RlciwgbmNvbCA9IDkpICsKICB0aGVtZV9idygpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJcbk1lYW4gcmF0aW5nIiwKICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gYygwLCAwLjUsIDEpLAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCIwXG4obm8pIiwgIjAuNVxuKGtpbmRhKSIsICIxXG4oeWVzKSIpKSArCiAgc2NhbGVfc2hhcGVfZGlzY3JldGUobmFtZSA9ICJTdHVkeToiLAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlN0dWR5IDM6IDctOXkiLCAiU3R1ZHkgNDogNC02eSIpKSArCiAgIyBzY2FsZV9jb2xvdXJfZGlzY3JldGUobmFtZSA9ICJTdHVkeToiLAogICMgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU3R1ZHkgMzogNy05eSIsICJTdHVkeSA0OiA0LTZ5IikpICsKICAjIHNjYWxlX2NvbG91cl9icmV3ZXIobmFtZSA9ICJGYWN0b3I6IiwKICAjICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJxdWFsIiwgcGFsZXR0ZSA9IDYsCiAgIyAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gRkFMU0UpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKG5hbWUgPSAiRmFjdG9yOiIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCIjRTQxQTFDIiwgIiMzNzdFQjgiLCAiIzREQUY0QSIpLAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIikpICsKICBjb29yZF9mbGlwKCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDkpLAogICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiaXRhbGljIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29sb3VyID0gcGFsZXR0ZV9zMSksCiAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKQoKczM0CmBgYAoKIyBNZWFuIGZhY3RvciBzY29yZXMKCiMjIFN0dWRpZXMgMS0yCgpgYGB7ciBzMTIgYWxsIG5vIHJvdGF0aW9uLCBpbmNsdWRlID0gRn0KIyBtYWtlIGNvbWJpbmVkIGRhdGFzZXQKZDEyX2FsbCA8LSBkMV9hbGwgJT4lIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSAlPiUKICBmdWxsX2pvaW4oZDJfYWxsICU+JSByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygic3ViaWQiKQoKIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDEyX2FsbCkKCiMgcnVuIEVGQSB3aXRob3V0IHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMTJfYWxsX3Vucm90YXRlZCA8LSBmYShkMTJfYWxsLCAxMywgcm90YXRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDEyX2FsbF91bnJvdGF0ZWQpCgojIGV4YW1pbmUgZWlnZW52YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZAplZmFfZDEyX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2QxMl9hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2QxMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzIDwtIGVmYV9kMTJfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kMTJfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHMxMiBhbGwgcm90YXRpb24sIGluY2x1ZGUgPSBGfQplZmFfZDEyX2FsbF9yb3RhdGVkX21heCA8LSBmYShkMTJfYWxsLCAxMywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCmVmYV9kMTJfYWxsX3JvdGF0ZWQgPC0gZmEoZDEyX2FsbCwgZWZhX2QxMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2QxMl9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kMTJfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kMTJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDEyX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QxMl9hbGwgPC0gZWZhX2QxMl9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDEyX2FsbApgYGAKCmBgYHtyIHMxMiBhbGwgdmFyaW1heCByb3RhdGlvbiwgaW5jbHVkZSA9IEZ9CiMgcnVuIEVGQSB3aXRoIHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMTJfYWxsX3JvdGF0ZWROIDwtIGZhKGQxMl9hbGwsIG5mYWN0b3JzX2QxMl9hbGwsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmVzID0gInRlbkJlcmdlIiwgbWlzc2luZyA9IFRSVUUpICMgaW1wdXRlIG1pc3NpbmcgdmFsdWVzCnByaW50KGVmYV9kMTJfYWxsX3JvdGF0ZWROKQoKIyBnZXQgbG9hZGluZ3MgZm9yIGVhY2ggZmFjdG9yCmVmYV9kMTJfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kMTJfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKYGBge3IgczEyIGxvYWRpbmdzIHRhYmxlLCBpbmNsdWRlID0gRn0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMTJfYWxsX3JvdGF0ZWROKSlbXSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJNIikpLCBmdW5zKHJvdW5kMikpCmBgYAoKYGBge3IgczEyIGZpZ3VyZSBzZXR1cCwgaW5jbHVkZSA9IEZ9CnNjb3Jlc19zMTJfcGxvdHRpbmcgPC0gZDEgJT4lIAogIHNlbGVjdChzdWJpZCwgYWdlX2dyb3VwLCBjaGFyYWN0ZXIpICU+JSAKICBkaXN0aW5jdCgpICU+JSAKICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSAlPiUKICBmdWxsX2pvaW4oZDIgJT4lIAogICAgICAgICAgICAgIHNlbGVjdChzdWJpZCwgYWdlX2dyb3VwLCBjaGFyYWN0ZXIpICU+JSAKICAgICAgICAgICAgICBkaXN0aW5jdCgpICU+JSAKICAgICAgICAgICAgICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kMTJfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlX2dyb3VwKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKSAlPiUKICBncm91cF9ieShhZ2VfZ3JvdXAsIGNoYXJhY3RlciwgZmFjdG9yKSAlPiUKICBkbyhkYXRhLmZyYW1lKHJiaW5kKHNtZWFuLmNsLmJvb3QoLiRzY29yZSkpKSkKYGBgCgpgYGB7ciBzMTIgcmVncmVzc2lvbn0KdGVtcEMgPC0gZDEgJT4lIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihkMiAlPiUgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkpICU+JQogIGZ1bGxfam9pbihkYXRhLmZyYW1lKGVmYV9kMTJfYWxsX3JvdGF0ZWROJHNjb3JlcykgJT4lCiAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSAlPiUKICAgICAgICAgICAgICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgLXN1YmlkKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpLAogICAgICAgICBhZ2VfZ3JvdXAgPSBmYWN0b3IoYWdlX2dyb3VwKSwKICAgICAgICAgY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICMgJT4lCiAgIyBmaWx0ZXIoIWlzLm5hKGZhY3RvciksICFpcy5uYShhZ2VfZ3JvdXApLCAhaXMubmEoY2hhcmFjdGVyKSkKCmNvbnRyYXN0cyh0ZW1wQyRmYWN0b3IpID0gY2JpbmQoZmFjdG9yMSA9IGMoMSwgLTEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY3RvcjMgPSBjKDAsIC0xLCAxKSkKCmNvbnRyYXN0cyh0ZW1wQyRhZ2VfZ3JvdXApID0gY2JpbmQoY2hpbGRyZW4gPSBjKC0xLCAxKSkKY29udHJhc3RzKHRlbXBDJGNoYXJhY3RlcikgPSBjYmluZChyb2JvdCA9IGMoLTEsIDEpKQoKbGlicmFyeShsbWU0KQpyMSA8LSBsbWVyKHNjb3JlIH4gY2hhcmFjdGVyICogZmFjdG9yICogYWdlX2dyb3VwICsgKDEgfCBzdWJpZCkgLCB0ZW1wQykKc3VtbWFyeShyMSkKCiMgbGlicmFyeShicm1zKQojIHIxYiA8LSBicm0oc2NvcmUgfiBjaGFyYWN0ZXIgKiBmYWN0b3IgKiBhZ2VfZ3JvdXAgKyAoMSB8IHN1YmlkKSAsIHRlbXBDLAojICAgICAgICAgICAgIGZhbWlseSA9ICJnYXVzc2lhbiIpCiMgc3VtbWFyeShyMWIpCmBgYAoKYGBge3IgczEyIGZpZ3VyZSBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBncm91cCwgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDN9CiMgcGxvdApnZ3Bsb3Qoc2NvcmVzX3MxMl9wbG90dGluZyAlPiUKICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpLAogICAgICAgICAgICAgICAgYWdlX2dyb3VwID0gZmFjdG9yKGFnZV9ncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGV2ZWxzID0gYygiYWR1bHRzIiwgImNoaWxkcmVuXzc5IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxhYmVscyA9IGMoImFkdWx0cyIsICJjaGlsZHJlbiIpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjaGlsZHJlbl83OSIsICJhZHVsdHMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImNoaWxkcmVuIiwgImFkdWx0cyIpKSksCiAgICAgICBhZXMoeCA9IGFnZV9ncm91cCwgeSA9IE1lYW4sIGNvbG9yID0gY2hhcmFjdGVyLCBzaGFwZSA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKCJmYWN0b3IiLCBuY29sID0gMykgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDUsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IExvd2VyLCB5bWF4ID0gVXBwZXIpLAogICAgICAgICAgICAgICAgd2lkdGggPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTksIDE1KSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBhZ2UgZ3JvdXAiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJBZHVsdHMgKFN0dWR5IDEpIHZzLiBjaGlsZHJlbiAoU3R1ZHkgMilcbiIsCiAgICAgICB4ID0gIkFnZSBncm91cCIsCiAgICAgICB5ID0gIk1lYW4gZmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAKCiMjIFN0dWR5IDMKCmBgYHtyIHMzIGZpZ3VyZSBzZXR1cCwgaW5jbHVkZSA9IEZ9CnNjb3Jlc19zM19wbG90dGluZyA8LSBkMyAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2VfZ3JvdXAsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihlZmFfZDNfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlX2dyb3VwKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKSAlPiUKICBncm91cF9ieShhZ2VfZ3JvdXAsIGNoYXJhY3RlciwgZmFjdG9yKSAlPiUKICBkbyhkYXRhLmZyYW1lKHJiaW5kKHNtZWFuLmNsLmJvb3QoLiRzY29yZSkpKSkKYGBgCgpgYGB7ciBzMyBmaWd1cmUgZmFjdG9yIHNjb3JlcyBieSBjaGFyYWN0ZXIsIGZpZy53aWR0aCA9IDYsIGZpZy5oZWlnaHQgPSAzfQpnZ3Bsb3Qoc2NvcmVzX3MzX3Bsb3R0aW5nICU+JQogICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb21wdXRlciIsICJyb2JvdCIsICJkb2xsIiwgInRlZGR5X2JlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJjb21wdXRlciIsICJyb2JvdCIsICJkb2xsIiwgInRlZGR5IGJlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSksCiAgICAgICAgICAgICAgICBmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInNjb3JlX0YyIiwgInNjb3JlX0YxIiwgInNjb3JlX0YzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsICJCb2RpbHkiLCAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSkpLAogICAgICAgYWVzKHggPSBjaGFyYWN0ZXIsIHkgPSBNZWFuLCBjb2xvciA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCh+IGZhY3RvciwgbmNvbCA9IDMpICsKICB0aGVtZV9idygpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArCiAgZ2VvbV9wb2ludChzaXplID0gNSwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNCkpICsKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gTG93ZXIsIHltYXggPSBVcHBlciksIAogICAgICAgICAgICAgICAgd2lkdGggPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgIyBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTcsIDE1LCAxOSwgcmVwKDE3LCA0KSkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSkpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxNywgMTUsIHJlcCgxNywgMiksIDE5LCByZXAoMTcsIDQpKSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBjaGFyYWN0ZXIiLAogICAgICAgeCA9ICJDaGFyYWN0ZXIiLAogICAgICAgeSA9ICJNZWFuIGZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCgoKIyMgU3R1ZGllcyAzLTQKCmBgYHtyIHMzNCBhbGwgbm8gcm90YXRpb24sIGluY2x1ZGUgPSBGfQojIG1ha2UgY29tYmluZWQgZGF0YXNldApkMzRfYWxsIDwtIGQzX2FsbCAlPiUgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpICU+JQogIGZ1bGxfam9pbihkNF9hbGwgJT4lIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJzdWJpZCIpCgojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkMzRfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QzNF9hbGxfdW5yb3RhdGVkIDwtIGZhKGQzNF9hbGwsIDYsIHJvdGF0ZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QzNF9hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2QzNF9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzIDwtIHByaW50KGVmYV9kMzRfYWxsX3Vucm90YXRlZCkkVmFjY291bnRlZCAlPiUKICB0KCkgJT4lCiAgZGF0YS5mcmFtZSgpCgojIGNvdW50IGZhY3RvcnMgd2l0aCBlaWdlbnZhbHVlcyA+IDEgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCA+IDUlCmVmYV9kMzRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDM0X2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgJT4lCiAgZmlsdGVyKFNTLmxvYWRpbmdzID4gMSwgUHJvcG9ydGlvbi5FeHBsYWluZWQgPiAwLjA1KSAlPiUKICBjb3VudCgpICU+JQogIGFzLm51bWVyaWMoKQplZmFfZDM0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMKYGBgCgpgYGB7ciBzMzQgYWxsIHJvdGF0aW9uLCBpbmNsdWRlID0gRn0KZWZhX2QzNF9hbGxfcm90YXRlZF9tYXggPC0gZmEoZDM0X2FsbCwgNiwgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCmVmYV9kMzRfYWxsX3JvdGF0ZWQgPC0gZmEoZDM0X2FsbCwgZWZhX2QzNF9hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2QzNF9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kMzRfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kMzRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDM0X2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QzNF9hbGwgPC0gZWZhX2QzNF9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDM0X2FsbApgYGAKCmBgYHtyIHMzNCBhbGwgdmFyaW1heCByb3RhdGlvbiwgaW5jbHVkZSA9IEZ9CiMgIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKIyBlZmFfZDM0X2FsbF9yb3RhdGVkTiA8LSBmYShkMzRfYWxsLCBuZmFjdG9yc19kMzRfYWxsLCAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yZXMgPSAidGVuQmVyZ2UiLCBtaXNzaW5nID0gVFJVRSkgIyBpbXB1dGUgbWlzc2luZyB2YWx1ZXMKIyBwcmludChlZmFfZDM0X2FsbF9yb3RhdGVkTikKCiMgZm9yY2UgMyBmYWN0b3JzCmVmYV9kMzRfYWxsX3JvdGF0ZWROIDwtIGZhKGQzNF9hbGwsIDMsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmVzID0gInRlbkJlcmdlIiwgbWlzc2luZyA9IFRSVUUpICMgaW1wdXRlIG1pc3NpbmcgdmFsdWVzCnByaW50KGVmYV9kMzRfYWxsX3JvdGF0ZWROKQoKIyBnZXQgbG9hZGluZ3MgZm9yIGVhY2ggZmFjdG9yCmVmYV9kMzRfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kMzRfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKYGBge3IgczM0IGxvYWRpbmdzIHRhYmxlLCBpbmNsdWRlID0gRn0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMzRfYWxsX3JvdGF0ZWROKSlbXSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJNIikpLCBmdW5zKHJvdW5kMikpCmBgYAoKYGBge3IgczM0IHN1YnNjYWxlIHJlbGlhYmlsaXR5fQojIENyb25iYWNoJ3MgYWxwaGEgKHN1YnNjYWxlcykKa2V5cy5saXN0X3MzNCA8LSBsaXN0KEhFQVJUID0gYygicHJpZGUiLCAiZGVwcmVzc2VkIiwgImRpc3Jlc3BlY3RlZCIsICJoYXBweSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAibG92ZSIsICJlbWJhcnJhc3NlZCIsICJhbmdyeSIsICJndWlsdCIpLAogICAgICAgICAgICAgICAgICBCT0RZID0gYygiaHVuZ3J5IiwgIm9kb3JzIiwgImZlYXIiLCAidGlyZWQiLCAicGFpbiIsICJuYXVzZWF0ZWQiKSwKICAgICAgICAgICAgICAgICAgTUlORCA9IGMoInRlbXBlcmF0dXJlIiwgInJlYXNvbmluZyIsICJyZW1lbWJlcmluZyIsICJjaG9pY2VzIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVwdGgiLCAiY29uc2Npb3VzIikpIApzY29yZXMgPC0gc2NvcmVJdGVtcyhrZXlzLmxpc3RfczM0LCBkMzRfYWxsLCBtaW4gPSAwLCBtYXggPSAxKSAgIyBvciBqdXN0IHVzZSB0aGUga2V5cy5saXQKIyBzdW1tYXJ5KHNjb3JlcykKc2NvcmVzCgojIG9tZWdhCm9tZWdhKGQzNF9hbGwsIHBsb3QgPSBGKQpgYGAKCmBgYHtyIHMzNCBmaWd1cmUgc2V0dXAsIGluY2x1ZGUgPSBGfQpzY29yZXNfczM0X3Bsb3R0aW5nIDwtIGQzICU+JSAKICBzZWxlY3Qoc3ViaWQsIGFnZV9ncm91cCwgY2hhcmFjdGVyKSAlPiUgCiAgZGlzdGluY3QoKSAlPiUgCiAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGQ0ICU+JSAKICAgICAgICAgICAgICBzZWxlY3Qoc3ViaWQsIGFnZV9ncm91cCwgY2hhcmFjdGVyKSAlPiUgCiAgICAgICAgICAgICAgZGlzdGluY3QoKSAlPiUgCiAgICAgICAgICAgICAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkpICU+JQogIGZ1bGxfam9pbihlZmFfZDM0X2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lIAogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUgCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgCiAgICAgICAgICFpcy5uYShzY29yZV9GMyksCiAgICAgICAgICFpcy5uYShhZ2VfZ3JvdXApKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgc3RhcnRzX3dpdGgoInNjb3JlXyIpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvcikpICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCwgY2hhcmFjdGVyLCBmYWN0b3IpICU+JQogIGRvKGRhdGEuZnJhbWUocmJpbmQoc21lYW4uY2wuYm9vdCguJHNjb3JlKSkpKQpgYGAKCmBgYHtyIHMzNCBmaWd1cmUgZmFjdG9yIHNjb3JlcyBieSBhZ2UgZ3JvdXAsIGZpZy53aWR0aCA9IDYsIGZpZy5oZWlnaHQgPSAzfQojIHBsb3QKZ2dwbG90KHNjb3Jlc19zMzRfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHlfYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHkgYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSwKICAgICAgICAgICAgICAgIGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2NvcmVfRjEiLCAic2NvcmVfRjIiLCAic2NvcmVfRjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJIZWFydCIsICJNaW5kIiwgIkJvZHkiKSksCiAgICAgICAgICAgICAgICBhZ2VfZ3JvdXAgPSBmYWN0b3IoYWdlX2dyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY2hpbGRyZW5fNzkiLCAiY2hpbGRyZW5fNDYiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlN0dWR5IDEgKDctOXkpIiwgIlN0dWR5IDIgKDQtNnkpIikpKSwKICAgICAgIGFlcyh4ID0gY2hhcmFjdGVyLCB5ID0gTWVhbiwgCiAgICAgICAgICAgY29sb3IgPSBhZ2VfZ3JvdXApKSArCiAgICAgICAgICAgIyBjb2xvciA9IGNoYXJhY3RlciwgCiAgICAgICAgICAgIyBzaGFwZSA9IGFnZV9ncm91cCkpICsKICBmYWNldF93cmFwKH4gZmFjdG9yLCBuY29sID0gMykgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDUsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IExvd2VyLCB5bWF4ID0gVXBwZXIpLCAKICAgICAgICAgICAgICAgIHdpZHRoID0gMC4yLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC40KSkgKwogICMgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgIiMwMEJGQzQiLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSkpICsKICAjIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE3LCAxNSwgMTksIHJlcCgxNywgNCkpKSArCiAgIyBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSksCiAgICAgICAgICAgICAgICAgICAgICMgZ3VpZGUgPSBGQUxTRSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgbGFicygjdGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBjaGFyYWN0ZXIgYW5kIGFnZSBncm91cCIsCiAgICAgICB4ID0gIkNoYXJhY3RlciIsCiAgICAgICB5ID0gIk1lYW4gZmFjdG9yIHNjb3JlIiwKICAgICAgIGNvbG9yID0gIlN0dWR5OiAiKSAjIDEwMDAgYnkgNTAwCmBgYAoKIyBGYWN0b3Igc2NvcmVzIGJ5IGFnZQoKIyMgU3R1ZHkgMQoKYGBge3IgczEgZmFjdG9yIHNjb3JlcyBieSBhZ2Ugc2V0dXAsIGZpZy53aWR0aCA9IDYsIGZpZy5oZWlnaHQgPSAzfQpzY29yZXNfczFfcGxvdHRpbmcgPC0gZDEgJT4lIAogIHNlbGVjdChzdWJpZCwgYWdlLCBjaGFyYWN0ZXIpICU+JSAKICBkaXN0aW5jdCgpICU+JSAKICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSAlPiUKICBmdWxsX2pvaW4oZWZhX2QxX2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lIAogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUgCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgIWlzLm5hKHNjb3JlX0YzKSwgIWlzLm5hKGFnZSkpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCBzdGFydHNfd2l0aCgic2NvcmVfIikpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yKSkKCmdncGxvdChzY29yZXNfczFfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2NvcmVfRjEiLCAic2NvcmVfRjIiLCAic2NvcmVfRjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpKSwKICAgICAgIGFlcyh4ID0gYWdlLCB5ID0gc2NvcmUsIGNvbG9yID0gY2hhcmFjdGVyLCBmaWxsID0gY2hhcmFjdGVyLCBzaGFwZSA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKCJmYWN0b3IiLCBuY29sID0gMykgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxOSwgMTUpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGFkdWx0cycgYWdlIiwKICAgICAgICMgc3VidGl0bGUgPSAiQWR1bHRzIChTdHVkeSAxKVxuIiwKICAgICAgIHggPSAiQWdlICh5ZWFycykiLAogICAgICAgeSA9ICJGYWN0b3Igc2NvcmUiKSAjIDEwMDAgYnkgNTAwCmBgYAoKIyMgU3R1ZHkgMgoKYGBge3IgczIgZmFjdG9yIHNjb3JlcyBieSBhZ2Ugc2V0dXAsIGZpZy53aWR0aCA9IDYsIGZpZy5oZWlnaHQgPSAzfQpzY29yZXNfczJfcGxvdHRpbmcgPC0gZDIgJT4lIAogIHNlbGVjdChzdWJpZCwgYWdlLCBjaGFyYWN0ZXIpICU+JSAKICBkaXN0aW5jdCgpICU+JSAKICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSAlPiUKICBmdWxsX2pvaW4oZWZhX2QyX2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lIAogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUgCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgIWlzLm5hKHNjb3JlX0YzKSwgIWlzLm5hKGFnZSkpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCBzdGFydHNfd2l0aCgic2NvcmVfIikpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yKSkKCmdncGxvdChzY29yZXNfczJfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQm9kaWx5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQZXJjZXB0dWFsLWNvZ25pdGl2ZSIpKSksCiAgICAgICBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBjb2xvciA9IGNoYXJhY3RlciwgZmlsbCA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCgiZmFjdG9yIiwgbmNvbCA9IDMpICsKICB0aGVtZV9idygpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3BvaW50KHNpemUgPSAyKSArCiAgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTksIDE1KSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBjaGlsZHJlbidzIGFnZSIsCiAgICAgICAjIHN1YnRpdGxlID0gIkNoaWxkcmVuIChTdHVkeSAyKVxuIiwKICAgICAgIHggPSAiQWdlICh5ZWFycykiLAogICAgICAgeSA9ICJGYWN0b3Igc2NvcmUiKSAjIDEwMDAgYnkgNTAwCmBgYAoKIyMgU3R1ZGllcyAxLTIKCmBgYHtyIHMxMiBzY2F0dGVyIHBsdXMgbWVhbiBzY29yZXMgYnkgYWdlIHNldHVwLCBmaWcud2lkdGggPSA1LCBmaWcuaGVpZ2h0ID0gM30KdGVtcEEgPC0gZDIgJT4lIAogIHNlbGVjdChzdWJpZCwgYWdlLCBjaGFyYWN0ZXIpICU+JSAKICBkaXN0aW5jdCgpICU+JSAKICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSAlPiUKICBmdWxsX2pvaW4oZWZhX2QxMl9hbGxfcm90YXRlZE4kc2NvcmVzICU+JSAKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lIAogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIpKSAlPiUKICByZW5hbWUoc2NvcmVfRjEgPSBNUjEsIHNjb3JlX0YyID0gTVIyLCBzY29yZV9GMyA9IE1SMykgJT4lCiAgZmlsdGVyKCFpcy5uYShzY29yZV9GMSksICFpcy5uYShzY29yZV9GMiksICFpcy5uYShzY29yZV9GMyksICFpcy5uYShhZ2UpKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgc3RhcnRzX3dpdGgoInNjb3JlXyIpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQm9kaWx5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpKQoKdGVtcEIgPC0gc2NvcmVzX3MxMl9wbG90dGluZyAlPiUKICBmaWx0ZXIoYWdlX2dyb3VwID09ICJhZHVsdHMiKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvZGlseSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQZXJjZXB0dWFsLWNvZ25pdGl2ZSIpKSwKICAgICAgICAgYWdlID0gMTEpIAoKZ2dwbG90KHRlbXBBLAogICAgICAgYWVzKHggPSBhZ2UsIHkgPSBzY29yZSwgY29sb3IgPSBjaGFyYWN0ZXIsIGZpbGwgPSBjaGFyYWN0ZXIsIHNoYXBlID0gY2hhcmFjdGVyKSkgKwogIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsKICBnZW9tX3BvaW50KGRhdGEgPSB0ZW1wQiwgYWVzKHkgPSBNZWFuKSwKICAgICAgICAgICAgIHNpemUgPSA0LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC42KSkgKwogIGdlb21fZXJyb3JiYXIoZGF0YSA9IHRlbXBCLCBhZXMoeW1pbiA9IExvd2VyLCB5bWF4ID0gVXBwZXIsIHkgPSBNZWFuKSwgd2lkdGggPSAwLjQsCiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC42KSkgKwogIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE5LCAxNSkpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYyg3OjExKSwgbGFiZWxzID0gYygiN3kiLCAiOHkiLCAiOXkiLCAiMTB5IiwgImFkdWx0cyIpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGFnZSIsCiAgICAgICAjIHN1YnRpdGxlID0gIkNoaWxkcmVuIChTdHVkeSAyKVxuIiwKICAgICAgIHggPSAiQWdlIiwKICAgICAgIHkgPSAiRmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAKCiMjIFN0dWRpZXMgMy00CgpgYGB7ciBzMzQgZmFjdG9yIHNjb3JlcyBieSBhZ2Ugc2V0dXAsIGZpZy53aWR0aCA9IDUsIGZpZy5oZWlnaHQgPSAxMH0Kc2NvcmVzX3MzNF9wbG90dGluZyA8LSBkMyAlPiUKICBzZWxlY3QoYWdlX2dyb3VwLCBzdWJpZCwgYWdlLCBjaGFyYWN0ZXIpICU+JQogIGRpc3RpbmN0KCkgJT4lCiAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGQ0ICU+JQogICAgICAgICAgICAgIHNlbGVjdChhZ2VfZ3JvdXAsIHN1YmlkLCBhZ2UsIGNoYXJhY3RlcikgJT4lCiAgICAgICAgICAgICAgZGlzdGluY3QoKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kMzRfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIG11dGF0ZShhZ2UgPSBpZmVsc2UoYWdlIDwgMy41LCBOQSwgYWdlKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKQoKZ2dwbG90KHNjb3Jlc19zMzRfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2NvcmVfRjEiLCAic2NvcmVfRjIiLCAic2NvcmVfRjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJIZWFydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWluZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQm9keSIpKSwKICAgICAgICAgICAgICAgIGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAicm9ib3QiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgImVsZXBoYW50IikpKSwKICAgICAgICMgYWVzKHggPSBhZ2UsIHkgPSBzY29yZSwgY29sb3IgPSBjaGFyYWN0ZXIsIGZpbGwgPSBjaGFyYWN0ZXIsIHNoYXBlID0gY2hhcmFjdGVyKSkgKwogICAgICAgYWVzKHggPSBhZ2UsIHkgPSBzY29yZSwgZ3JvdXAgPSBhZ2VfZ3JvdXApKSArCiAgIyBmYWNldF93cmFwKCJmYWN0b3IiLCBuY29sID0gMykgKwogICMgZmFjZXRfZ3JpZChmYWN0b3IgfiBjaGFyYWN0ZXIpICsKICBmYWNldF9ncmlkKGNoYXJhY3RlciB+IGZhY3RvcikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40LCBmb3JtdWxhID0geSB+IHBvbHkoeCwgMikpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40LCBmb3JtdWxhID0geSB+IHBvbHkoeCwgMykpICsKICBnZW9tX3BvaW50KHNpemUgPSAyKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgyLCAxMiwgMikpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgIiMwMEJGQzQiLCByZXAoImdyYXkiLCAyKSwgIiNGODc2NkQiLCByZXAoImJsYWNrIiwgNCkpKSArCiAgIyBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSkpICsKICAjIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE3LCAxNSwgcmVwKDE3LCAyKSwgMTksIHJlcCgxNywgNCkpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGNoaWxkcmVuJ3MgYWdlIiwKICAgICAgICMgc3VidGl0bGUgPSAiQ2hpbGRyZW4gKFN0dWRpZXMgMy00KVxuIiwKICAgICAgIHggPSAiQWdlICh5ZWFycykiLAogICAgICAgeSA9ICJGYWN0b3Igc2NvcmUiKSAjIDEwMDAgYnkgNTAwCgpnZ3Bsb3Qoc2NvcmVzX3MzNF9wbG90dGluZyAlPiUKICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJzY29yZV9GMyIsICJzY29yZV9GMSIsICJzY29yZV9GMiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkJvZHkiLCAiSGVhcnQiLCAiTWluZCIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxldmVscyA9IGMoInNjb3JlX0YxIiwgInNjb3JlX0YyIiwgInNjb3JlX0YzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsYWJlbHMgPSBjKCJIZWFydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICJNaW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgIkJvZHkiKSksCiAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHlfYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSksCiAgICAgICBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlKSkgKwogICAgICAgIyBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBncm91cCA9IGFnZV9ncm91cCkpICsKICAjIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgIyBmYWNldF9ncmlkKGZhY3RvciB+IGNoYXJhY3RlcikgKwogIGZhY2V0X2dyaWQoY2hhcmFjdGVyIH4gZmFjdG9yKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuMiwgY29sb3IgPSAiYmxhY2siKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCwgZm9ybXVsYSA9IHkgfiBwb2x5KHgsIDIpKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCwgZm9ybXVsYSA9IHkgfiBwb2x5KHgsIDMpKSArCiAgZ2VvbV9wb2ludChzaXplID0gMiwgYWVzKGNvbG9yID0gYWdlX2dyb3VwKSkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMiwgMTIsIDIpKSArCiAgIyBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgcmVwKCJncmF5IiwgMiksICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgIiMwMEJGQzQiLCByZXAoImdyYXkiLCAyKSwgIiNGODc2NkQiLCByZXAoImJsYWNrIiwgNCkpKSArCiAgIyBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxNywgMTUsIHJlcCgxNywgMiksIDE5LCByZXAoMTcsIDQpKSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgbGFicygjdGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBjaGlsZHJlbidzIGFnZSIsCiAgICAgICAjIHN1YnRpdGxlID0gIkNoaWxkcmVuIChTdHVkaWVzIDMtNClcbiIsCiAgICAgICB4ID0gIkFnZSAoeWVhcnMpIiwKICAgICAgIHkgPSAiRmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAKCgpgYGB7cn0KY29udHJhc3RzKHNjb3Jlc19zMzRfcGxvdHRpbmckZmFjdG9yKSA8LSBjYmluZChoZWFydCA9IGMoMSwgMCwgLTEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmQgPSBjKDAsIDEsIC0xKSkKY29udHJhc3RzKHNjb3Jlc19zMzRfcGxvdHRpbmckY2hhcmFjdGVyKSA8LSBjYmluZChhbmltYXRlID0gYyg1LCA1LCAtNCwgLTQsIDUsIDUsIDUsIC00LCAtNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFtbWFsID0gYygtMywgLTMsIDAsIDAsIDIsIDIsIDIsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZXBoYW50ID0gYygwLCAwLCAwLCAwLCAyLCAtMSwgLTEsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvYXQgPSBjKDAsIDAsIDAsIDAsIDAsIDEsIC0xLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXJkID0gYygtMSwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVjaCA9IGMoMCwgMCwgMSwgLTEsIDAsIDAsIDAsIDEsIC0xKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2JvdCA9IGMoMCwgMCwgLTEsIDAsIDAsIDAsIDAsIDEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlZGR5ID0gYygwLCAwLCAwLCAtMSwgMCwgMCwgMCwgMCwgMSkpCgojIHJlZ190ZW1wIDwtIGxtZXIoc2NvcmUgfiBmYWN0b3IgKiBjaGFyYWN0ZXIgKiBzY2FsZShhZ2UsIHNjYWxlID0gRikgKyAoMSB8IGNoYXJhY3RlcikgKyAoMSB8IHN1YmlkKSwgZGF0YSA9IHNjb3Jlc19zMzRfcGxvdHRpbmcpCgojIHN1bW1hcnkocmVnX3RlbXApCgpwdmFscyA8LSBkYXRhLmZyYW1lKCkKZm9yKGkgaW4gbGV2ZWxzKHNjb3Jlc19zMzRfcGxvdHRpbmckY2hhcmFjdGVyKSkgewogIGZvcihqIGluIGxldmVscyhzY29yZXNfczM0X3Bsb3R0aW5nJGZhY3RvcikpIHsKICAgIHJlcyA8LSBzdW1tYXJ5KGxtKHNjb3JlIH4gc2NhbGUoYWdlLCBzY2FsZSA9IEYpLAogICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNjb3Jlc19zMzRfcGxvdHRpbmcgJT4lIGZpbHRlcihjaGFyYWN0ZXIgPT0gaSwgZmFjdG9yID09IGopKSkKICAgIHAgPC0gcm91bmQocmVzJGNvZWZmaWNpZW50c1syLCA0XSwgMykKICAgIHB2YWxzW2ksIGpdIDwtIHAKICB9Cn0KCnB2YWxzIDwtIHB2YWxzICU+JSAKICBzZWxlY3Qoc2NvcmVfRjMsIHNjb3JlX0YxLCBzY29yZV9GMikgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjaGFyYWN0ZXIiKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlciwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb21wdXRlciIsICJyb2JvdCIsICJkb2xsIiwgInRlZGR5X2JlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSkgJT4lCiAgYXJyYW5nZShjaGFyYWN0ZXIpCgpwdmFscwoKcHZhbHMgJT4lIAogIGdhdGhlcihmYWN0b3IsIHAsIC1jaGFyYWN0ZXIpICU+JQogIGZpbHRlcihwIDwgMC4wNS8obnJvdyhwdmFscykgKiBuY29sKHB2YWxzKSkpICU+JQogIHNwcmVhZChmYWN0b3IsIHApCgpwdmFsc19jYXQgPC0gZGF0YS5mcmFtZSgpCmZvcihpIGluIGxldmVscyhzY29yZXNfczM0X3Bsb3R0aW5nJGNoYXJhY3RlcikpIHsKICBmb3IoaiBpbiBsZXZlbHMoc2NvcmVzX3MzNF9wbG90dGluZyRmYWN0b3IpKSB7CiAgICByZXMgPC0gc3VtbWFyeShsbShzY29yZSB+IGFnZV9ncm91cCwKICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzY29yZXNfczM0X3Bsb3R0aW5nICU+JSBmaWx0ZXIoY2hhcmFjdGVyID09IGksIGZhY3RvciA9PSBqKSkpCiAgICBwIDwtIHJvdW5kKHJlcyRjb2VmZmljaWVudHNbMiwgNF0sIDMpCiAgICBwdmFsc19jYXRbaSwgal0gPC0gcAogIH0KfQoKcHZhbHNfY2F0IDwtIHB2YWxzX2NhdCAlPiUgCiAgc2VsZWN0KHNjb3JlX0YzLCBzY29yZV9GMSwgc2NvcmVfRjIpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2hhcmFjdGVyIikgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAicm9ib3QiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSkpICU+JQogIGFycmFuZ2UoY2hhcmFjdGVyKQoKcHZhbHNfY2F0CgpwdmFsc19jYXQgJT4lIAogIGdhdGhlcihmYWN0b3IsIHAsIC1jaGFyYWN0ZXIpICU+JQogIGZpbHRlcihwIDwgMC4wNS8obnJvdyhwdmFsc19jYXQpICogbmNvbChwdmFsc19jYXQpKSkgJT4lCiAgc3ByZWFkKGZhY3RvciwgcCkKYGBgCgpgYGB7ciBzMzQgcm9ib3QgcHJvcG9ydGlvbnMsIGZpZy53aWR0aD0zLCBmaWcuaGVpZ2h0PTN9CiMgcGxvdCEgKG9yZGVyZWQgYnkgc3R1ZHkgMyBmYWN0b3IgbG9hZGluZ3MpCnMzNF9yb2JvdF9jYXQgPC0gZ2dwbG90KGQzNF9hbGwgJT4lCiAgICAgICAgICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikgJT4lCiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoZ3JlcGwoInJvYm90Iiwgc3ViaWQpKSAlPiUKICAgICAgICAgICAgICAgICAgICAgIG11dGF0ZShzdWJpZCA9IGdzdWIoInJvYm90XyIsICIiLCBzdWJpZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaWQgPSBhcy5jaGFyYWN0ZXIoc3ViaWQpKSAlPiUKICAgICAgICAgICAgICAgICAgICAgIGxlZnRfam9pbihkMyAlPiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Qoc3ViaWQsIHN0dWR5KSAlPiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGUoc3ViaWQgPSBhcy5jaGFyYWN0ZXIoc3ViaWQpKSAlPiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdCgpICU+JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9qb2luKGQ0ICU+JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0KHN1YmlkLCBzdHVkeSkgJT4lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGUoc3ViaWQgPSBhcy5jaGFyYWN0ZXIoc3ViaWQpKSAlPiUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0KCkpKSAlPiUKICAgICAgICAgICAgICAgICAgICAgIG11dGF0ZShzdHVkeSA9IGZhY3RvcihzdHVkeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJzdHVkeSA0IiwgInN0dWR5IDMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTdHVkeSAxICg0LTZ5KSIsICJTdHVkeSAyICg3LTl5KSIpKSkgJT4lCiAgICAgICAgICAgICAgICAgICAgICBnYXRoZXIoY2FwYWNpdHksIHJlc3BvbnNlLCBhbmdyeTp0aXJlZCkgJT4lCiAgICAgICAgICAgICAgICAgICAgICBmdWxsX2pvaW4oczM0X3Bsb3R0aW5nICU+JSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdChjYXBhY2l0eSwgd29yZGluZywgczNfZmFjdG9yLCBzM19vcmRlcikpICU+JQogICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGUod29yZGluZyA9IHJlb3JkZXIod29yZGluZywgczNfb3JkZXIpKSwKICAgICAgICAgICAgICAgYWVzKHggPSBzdHVkeSwgCiAgICAgICAgICAgICAgICAgICBmaWxsID0gc3R1ZHksCiAgICAgICAgICAgICAgICAgICBhbHBoYSA9IGZhY3RvcihyZXNwb25zZSkpKSArIAogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiLCBjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2JyZXdlcihuYW1lID0gIlN0dWR5OiIsIHBhbGV0dGUgPSAiU2V0MSIpICsKICBzY2FsZV9hbHBoYV9kaXNjcmV0ZShuYW1lID0gIlJlc3BvbnNlOiIsIGxhYmVscyA9IGMoIk5PIiwgIktJTkRBIiwgIllFUyIpKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dCgpLAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxKSwKICAgICAgbGVnZW5kLnBvc2l0aW9uID0gInRvcCIpICsKICBsYWJzKHggPSAiU3R1ZHkiLAogICAgICAgeSA9ICJQcm9wb3J0aW9uIG9mIFJlc3BvbnNlcyIpICsKICAjIGNvb3JkX2ZsaXAoKSArCiAgIyBmYWNldF9ncmlkKGNhcGFjaXR5IH4gLiwgc3dpdGNoID0gInkiKQogIGZhY2V0X3dyYXAofiB3b3JkaW5nLCBuY29sID0gNSkKCnMzNF9yb2JvdF9jYXQKYGBgCgo=